如何在 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.