Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux CPU 使用率查看指令大全:top、vmstat、mpstat、pidstat 實戰解析

編輯:關於 Linux

「CPU 使用率高」是效能調優最常見的起點,但單看一個數字遠不夠。需區分用戶態/系統態/等待I/O/軟中斷、觀察每核心負載、找出佔用 CPU 的進程/執行緒、判斷上下文切換與中斷風暴。本文系統整理四大核心指令,含參數詳解、輸出欄位解讀、實戰診斷流程。

1. top - 互動式即時進程監控

啟動與常用熱鍵

top
# 進入後熱鍵:
1        # 切換顯示所有核心 CPU
H        # 切換顯示執行緒
u  # 篩選使用者
k        # 殺死進程 (輸入 PID + signal)
r        # 重設 nice 值
d        # 修改更新間隔 (秒)
W        # 寫入 ~/.toprc 保存設定
q        # 離開

關鍵欄位解讀

欄位含義
%CPU進程佔用單核心百分比(多核心可超過 100%)
%MEM記憶體佔用百分比
TIME+累積 CPU 時間(百秒)
S狀態:R=運行、S=睡眠、D=不可中斷睡眠、Z=殭屍、T=停止
NINice 值(-20~19,越小優先級越高)

摘要區 CPU 行

%Cpu(s): 10.2 us,  2.1 sy,  0.0 ni, 86.5 id,  1.0 wa,  0.0 hi,  0.2 si,  0.0 st
  • us:用戶態(應用程式碼)
  • sy:系統態(核心系統調用)
  • ni:低優先級用戶態
  • id:閒置
  • wa:等待 I/O(高表示磁碟/網路瓶頸)
  • hi:硬體中斷
  • si:軟中斷(網路封包處理、timer 等)
  • st:虛擬機被 hypervisor 偷走的時間

2. vmstat - 系統級 CPU/記憶體/I/O 快照

常用參數

vmstat 1 10        # 每1秒採樣10次
vmstat -a 1        # 顯示 active/inactive 記憶體
vmstat -t          # 加上時間戳

CPU 相關欄位(輸出右側)

----cpu----
us sy id wa st
欄位含義健康基準
us用戶態 %65-70% (滿載時)
sy系統態 %30-35% (滿載時)
id閒置 %0-5% (滿載時)
wa等待 I/O %< 5% (持續高則 I/O 瓶頸)
stSteal % (虛擬化)< 1% (高則宿主機超賣)

搭配觀察:運行佇列 r 與上下文切換 cs

  • r > CPU 核心數 × 2-3 → CPU 壓力大
  • cs > 50,000/秒 → 進程/執行緒切換頻繁,檢查鎖競爭、大量短命進程
  • in(中斷)高 → 網卡/磁碟控制器中斷風暴

3. mpstat - 多核心 CPU 詳細統計

常用參數

mpstat -P ALL 1          # 所有核心 + 平均,每1秒
mpstat -P ALL 1 10       # 採樣10次
mpstat -I SUM 1          # 中斷統計摘要
mpstat -I CPU 1          # 每核心中斷分布

輸出重點

  • 單核心 %usr 或 %sys 持續 100% → 單執行緒瓶頸(如未並行化計算、單執行緒資料庫查詢)。
  • %irq/%soft 偏高於特定核心 → 中斷親和性 未平衡,可用 irqbalance 或手動 /proc/irq/N/smp_affinity 調整。
  • %guest/%gnice → KVM/QEMU 客體 CPU 佔用。

4. pidstat - 進程/執行緒級 CPU 精準定位

sysstat 套件 提供,比 top 更適合腳本化、歷史記錄。

常用參數

pidstat 1 10                    # 所有進程 CPU,每1秒10次
pidstat -u 1 10                 # 明確指定 CPU 報告
pidstat -t 1 10                 # 顯示執行緒級 (-t)
pidstat -p  1 10           # 只看指定 PID
pidstat -C  1 10       # 依命令名模式篩選
pidstat -h                      # 顯示時間戳
pidstat -r                      # 同時顯示記憶體/頁錯誤

輸出欄位

UID   PID  %usr %system %guest %CPU  CPU  Command
1000 1234  15.2   2.1    0.0   17.3  2   java
  • %usr + %system = %CPU(單核心百分比)
  • CPU:最後執行的核心編號
  • 加 -t 後會展開每個執行緒(TGID/TID),定位多執行緒應用熱點。

5. dstat - 現代化整合監控(可選,更易讀)

sudo apt/dnf install dstat
dstat -c --top-cpu --top-mem 1    # CPU + 最高CPU進程 + 最高MEM進程
dstat -c -i -p 1                  # CPU + 中斷 + 進程
dstat --cpu --proc-count 1        # CPU + 進程計數

實戰診斷流程:從「CPU 高」到「根因」

  1. 確認整體狀況:vmstat 1 5 看 us/sy/wa/id、r、cs。
  2. 若 wa 高 → iostat -xz 1 5 找磁碟瓶頸(非 CPU 問題)。
  3. 若 sy 高 → mpstat -I CPU 1 看中斷分布;pidstat -t 1 找系統調用多的進程;strace -p PID 追蹤系統調用。
  4. 若 us 高 → mpstat -P ALL 1 看是單核心還是多核心;pidstat -u 1 或 top -H 找熱點進程/執行緒;perf top 或 perf record -g 做函數級剖析。
  5. 若 st 高 (虛擬機) → 宿主機 CPU 過度承諾,需調整 vCPU 配比或遷移實例。

效能基準參考(滿載時)

指標健康範圍警戒
運行佇列 r< 核心數 × 2> 核心數 × 4
上下文切換 cs< 20,000/s> 50,000/s
中斷 in< 10,000/s> 50,000/s
CPU 等待 I/O wa< 5%> 20%
Steal st< 1%> 5%

掌握 top 互動觀察、vmstat 系統快照、mpstat 核心細節、pidstat 進程定位四大工具,配合 perf/bpftrace 深度剖析,即可從「CPU 跑滿」精準挖掘到「哪行代碼、哪個鎖、哪個系統調用」導致的瓶頸,實現數據驅動的效能優化。

Copyright © Windows教程網 All Rights Reserved