Debugging High CPU Utilization over 100 For a Process on Linux

Updated: Oct 8

CPU utilization is a key metric to determine how much CPU uses for a process. Today we will review why the CPU utilization for a process is over 100%. This can help us understand how CPU works on Linux.




How to Check CPU Utilization on Linux

Top is a basic Linux command to display Linux process info. It covers the system load average, CPU utilization, process status etc.


In the following example, the utilization for process YYYY is 150%.

top - 05:43:20 up 10 days, 20:45,  1 user,  load average: 0.29, 0.29, 0.29
Tasks: 755 total,   1 running, 754 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.4 us,  0.4 sy,  0.0 ni, 98.8 id,  0.4 wa,  0.0 hi,  0.0 si,  0.0 st

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

8081 oracle -2 0 1556468 20096 17032 S 1.7 0.1 255:57.88 asm_vktm_+asm1

57124 oracle -2 0 4920124 19764 16640 S 1.7 0.1 157:05.44 ora_vktm_test21

Why CPU Utilization is over 100% for a Process?

The values of CPU usage over 100% for "YYYY" process is not a problem and it is a absolutely expected behaviour on multi-core CPU system based on the man page. It means that the process consumes more than 1 CPU (core). As per the man page:

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


Example:

CPU-1 <<<------+----YYYY is using 100% of CPU-1.

CPU-2 <<<------+----Another YYYY thread is using 50% of CPU-2.

Note: In the above condition, the top command will show you 100% + 50% = 150% CPU usage for process "YYYY".


Related Post:

CPU utilization Not Evenly distributed


349 views