如何在 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、mpstat 和 perf 命令都是为此目的而使用的有用工具,并提供了一系列选项来测量不同的性能指标。了解各个内核的 CPU 使用情况可以帮助您识别瓶颈并提高系统的整体性能。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP