Skip to Content

 If Your CPU Usage is Over 100%, Read This Before Freaking Out!

As a Linux system engineer, I’m sure you’ve all used the top command.

It’s been the go-to tool for decades—simple, reliable, and always there when you need it.

But have you ever noticed one thing? Occasionally, you might spot a process with CPU usage skyrocketing to 150%, 200%, or even 400%! Surprised?

So what’s going on here? How is that possible?

Get Your Linux Course!

Join our Linux Course and discover the power of open-source technology. Enhance your skills and boost your career! Learn Linux today!

At first glance, these numbers might seem like a mistake—after all, how can something use more than 100% of the CPU? Is the system broken? or hacked?

But in reality, this is completely normal. The reason lies in how Linux reports CPU usage and how multi-core processors function.

In this article, we’ll explore why this happens and prove it with practical tools and real-world examples.


Checking CPU Utilization Using top

The CPU is the powerhouse of any operating system, executing instructions that allow programs to run.

In Linux, the top command is a handy tool that provides real-time performance insights. It displays key system metrics like:

  • Process usage
  • Memory consumption
  • CPU load

When a system experiences high CPU utilization, top helps identify which processes are using the most resources, making it easier to diagnose performance issues.

To check CPU utilization, open a terminal and run:

top

This command generates a live performance overview. One of the most critical sections in the output is CPU usage per process.

Here is the output of the top command in my Linux.

You may notice that some processes show a CPU utilization exceeding 100%.

Example:

PID   USER   PR  NI  VIRT   RES   SHR   S  %CPU  %MEM  TIME+      COMMAND
5424  root   rt  0   1590640 176520 106044 S  150   0.5   395:13.89   YYYY

Here, process YYYY is consuming 150% CPU usage—but how is that possible?


Why CPU Utilization Exceeds 100%

Understanding Multi-Core Processing

Think of your CPU like a team of workers. In the past, computers had just one worker (single-core processors).

If a task needed 100% of that worker’s time, the system reported 100% CPU usage.

Now, modern CPUs have multiple workers (multi-core processors). If you have four cores, your system has four workers. A single task can be divided among multiple cores.

This means that one process could use 100% of two cores, leading to a 200% CPU usage report in top.

We will prove it with tools later.

So, those high numbers aren’t a bug; they’re a testament to the power of modern, multi-core processing!

Key factors contributing to CPU usage over 100%:

  • Multi-Core Processors: A CPU with multiple cores can handle multiple tasks at the same time.
  • Workload Distribution: The Linux scheduler distributes workloads efficiently across cores.
  • Multi-Threading: If a process is multi-threaded, it can utilize more than one core simultaneously.

How Linux Reports CPU Usage

Linux reports CPU usage based on a single core. This means that if a process is using 1.5 CPU cores, it will be displayed as 150% CPU usage in top.

Example Breakdown:

  • CPU-1 → Process YYYY is using 100% of this core.
  • CPU-2 → Another thread of YYYY is using 50% of this core.

Total CPU usage reported: 100% + 50% = 150%.

This behavior is also officially documented in the top command manual:

In a true SMP (Symmetric Multiprocessing) environment, if a process is multi-threaded and top is not operating in Threads mode, amounts greater than 100% may be reported.


Simulating High CPU Usage: A Hands-On Example

Let’s create manual load to see how Linux reports it.

Step 1: Install the stress Tool

sudo apt install stress

Step 2: Generate CPU Load

Run a command to fully utilize 4 CPU cores for 60 seconds:

stress --cpu 4 --timeout 60

Step 3: Monitor with top and mpstat

  • In one terminal, run top and press 1 to see per-core usage.
  • In another, run mpstat -P ALL 1 to track core utilization.

Expected Output

PID   USER   %CPU  COMMAND
7890  user   400%  stress

This confirms stress is fully utilizing 4 cores.

Viewing Per-Thread CPU Usage

To get a more detailed breakdown of how CPU usage is distributed among threads, use:

top -H

This command displays each individual thread within a process, allowing you to see exactly how a process is utilizing multiple cores.


kill -9 <PID>

Check Your CPU Cores

Want to see how many cores your system has? Run:

nproc --all

If it outputs 4, your system has four cores. If a process fully utilizes all four cores, top could show 400% CPU usage.

Modern CPUs often use hyper-threading, where a single physical core behaves like two logical cores.

For example, a 4-core CPU with hyper-threading appears as 8 logical cores. This boosts parallel processing but also means Linux may report CPU usage as a percentage of these logical cores.


View CPU Usage Per Core

Want to see CPU usage for each core individually? Press 1 while top is running.

You’ll see output like this:

%Cpu0  :  75.0 us,  0.0 sy,  0.0 ni,  25.0 id
%Cpu1  : 100.0 us,  0.0 sy,  0.0 ni,   0.0 id
%Cpu2  :  50.0 us,  0.0 sy,  0.0 ni,  50.0 id
%Cpu3  :  25.0 us,  0.0 sy,  0.0 ni,  75.0 id

Each core is handling its own share of tasks.



Customizing top for Better Visibility

Change Display Mode

Press I (uppercase i) to toggle between cumulative and per-core CPU usage.

Adjust Update Interval

Want more frequent updates? Press d while top is running and enter a lower number (e.g., 1 second).

Sort Processes by CPU Usage

Press Shift + P to sort by CPU consumption.

Kill a High-Usage Process

If a process is consuming too many resources, you can terminate it from top. Press k, enter the PID, and confirm.


Key Takeaways

  • Seeing CPU usage over 100% is normal. It means the process is using multiple CPU cores.
  • Use top to monitor CPU usage. Press 1 to view per-core usage.
  • Run nproc --all to check your core count.
  • Use stress to simulate high CPU workloads.
  • Optimize monitoring with top shortcuts.

Understanding CPU usage is essential for system performance monitoring. Now, the next time you see CPU usage above 100%, you’ll know exactly what’s happening!