在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包。
$ sudo apt-get install linux-tools-common
一旦安装了perf软件包,你可以使用perf stat命令来测量某个特定进程的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使用情况可以帮助你识别瓶颈,并提高系统的整体性能。