Measure CPU usage for a process on Linux?


Introduction

On modern multi-core CPUs, it is often useful to know the CPU usage of individual cores for a particular process. This can be helpful for identifying bottlenecks in the system, or for understanding the workload distribution across CPU cores. In this article, we will see how to measure separate CPU core usage for a process on Linux using various command line tools.

Measure CPU Core Usage using top Command

The top command is a commonly used tool for monitoring system resources, including CPU usage. By default, top displays the overall CPU usage for all cores, but it also provides a way to see the CPU usage for each core individually.

To do this, first, run the top command and press 1 to see the usage of each CPU core. This will display a breakdown of the CPU usage for each core, as well as the overall usage.

top - 10:38:00 up 45 min, 3 users, load average: 0.26, 0.14, 0.15
Tasks   : 23 total, 1 running, 22 sleeping, 0 stopped, 0 zombie
%Cpu0   : 5.0 us, 4.0 sy, 0.0 ni, 91.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1   : 4.7 us, 4.0 sy, 0.0 ni, 89.3 id, 2.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7957.6 total, 6407.9 free, 541.9 used, 1007.8 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 7185.1 avail Mem

PID USER  PR  NI  VIRT   RES   SHR  S  %CPU  %MEM   TIME+ COMMAND
1 root    20  0   3900   3016  2728 S  0.0   0.0    0:00.02 bash

In the above output, the %CPU column shows the CPU usage for each core. For example, the first core is using 0.3% of the CPU, while the other cores are not being used at all.

Measure CPU Core Usage using mpstat Command

The mpstat command is another tool that can be used to measure CPU usage on a per-core basis. To use mpstat, first install the sysstat package using your distribution's package manager. On Ubuntu and other Debian-based systems, you can use the following command −

$ sudo apt-get install sysstat

Once the sysstat package is installed, you can use the mpstat command to see the CPU usage for each core. By default, mpstat displays the overall CPU usage, but you can use the -P ALL option to see the usage of each individual core.

$ mpstat -P ALL
Linux 5.10.147+ (cs) 12/19/2022 _x86_64_ (2 CPU)

10:43:33  AM  CPU   %usr  %nice   %sys   %iowait %irq  %soft  %steal
%guest %gnice %idle
10:43:33  AM  all   4.67   0.00   3.53   0.64    0.00  0.06   0.04
0.00 0.00 91.06  
10:43:33  AM 0      4.63   0.00   3.36   0.05    0.00  0.04   0.04
0.00 0.00 91.87
10:43:33  AM  1     4.70   0.00   3.70   1.24    0.00  0.07   0.04
0.00 0.00 90.24

Measure CPU Core Usage using perf Command

A perf command is a powerful tool for performance analysis and profiling on Linux. It can be used to measure the CPU usage of a particular process or set of processes.

To use perf to measure CPU usage, you will need to first install the perf package using your distribution's package manager. On Ubuntu and other Debian-based systems, you can use the following command −

$ sudo apt-get install linux-tools-common

Once the perf package is installed, you can use the perf stat command to measure the CPU usage of a particular process. For example, to measure the CPU usage of the sleep process with PID 6565, you can use the following command −

perf stat -p 6565
Performance counter stats for process id '6565':
   1.07 msec task-clock        # 0.003 CPUs utilized
      569 context-switches     # 0.529 K/sec
         0 CPU-migrations      # 0.000 K/sec
         26 page-faults        # 0.024 K/sec
   22,547,697 cycles           # 2.108 GHz
      8,262,105 instructions   # 0.37 insn per cycle
      1,981,482 branches       # 1846.695 M/sec
         16,532 branch-misses  # 0.83% of all branches
   1.477977927 seconds time elapsed

The perf command provides a wide range of options for measuring various performance metrics, including CPU usage, memory usage, and more.

Conclusion

Overall, measuring separate CPU core usage for a process on Linux can be useful for identifying performance issues and optimizing the workload distribution on a multi-core system. The top, mpstat, and perf commands are all useful tools for this purpose, and provide a range of options for measuring different performance metrics. Understanding the CPU usage of individual cores can help you identify bottlenecks and improve the overall performance of your system.

Updated on: 12-Jan-2023

6K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements