如何在 Linux 上测量进程的 CPU 使用率?


简介

在现代多核 CPU 上,了解特定进程各个内核的 CPU 使用情况通常很有用。这有助于识别系统瓶颈,或了解 CPU 内核之间的工作负载分配。在本文中,我们将了解如何使用各种命令行工具在 Linux 上测量进程的各个 CPU 内核使用情况。

使用 top 命令测量 CPU 内核使用情况

top 命令是用于监控系统资源(包括 CPU 使用情况)的常用工具。默认情况下,top 显示所有内核的整体 CPU 使用情况,但它也提供了一种查看每个内核的 CPU 使用情况的方法。

为此,首先运行 top 命令并按 1 以查看每个 CPU 内核的使用情况。这将显示每个内核的 CPU 使用情况细分,以及整体使用情况。

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

在以上输出中,%CPU 列显示每个内核的 CPU 使用情况。例如,第一个内核使用了 0.3% 的 CPU,而其他内核则根本没有使用。

使用 mpstat 命令测量 CPU 内核使用情况

mpstat 命令是另一个可用于按内核测量 CPU 使用情况的工具。要使用 mpstat,首先使用发行版的包管理器安装 sysstat 包。在 Ubuntu 和其他基于 Debian 的系统上,可以使用以下命令:

$ sudo apt-get install sysstat

安装 sysstat 包后,可以使用 mpstat 命令查看每个内核的 CPU 使用情况。默认情况下,mpstat 显示整体 CPU 使用情况,但可以使用 -P ALL 选项查看每个内核的使用情况。

$ 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

使用 perf 命令测量 CPU 内核使用情况

perf 命令是 Linux 上用于性能分析和性能分析的强大工具。它可用于测量特定进程或一组进程的 CPU 使用情况。

要使用 perf 测量 CPU 使用情况,您需要首先使用发行版的包管理器安装 perf 包。在 Ubuntu 和其他基于 Debian 的系统上,可以使用以下命令:

$ sudo apt-get install linux-tools-common

安装 perf 包后,可以使用 perf stat 命令测量特定进程的 CPU 使用情况。例如,要测量 PID 为 6565 的 sleep 进程的 CPU 使用情况,可以使用以下命令:

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

perf 命令提供了各种选项来测量各种性能指标,包括 CPU 使用情况、内存使用情况等。

结论

总的来说,在 Linux 上测量进程的各个 CPU 内核使用情况对于识别性能问题和优化多核系统上的工作负载分配很有用。top、mpstatperf 命令都是为此目的而使用的有用工具,并提供了一系列选项来测量不同的性能指标。了解各个内核的 CPU 使用情况可以帮助您识别瓶颈并提高系统的整体性能。

更新于: 2023年1月12日

7K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.