mpstat 是 sysstat 套件提供的多處理器統計工具,能針對每個邏輯 CPU 核心顯示詳細使用率細分(user、nice、system、iowait、irq、soft、steal、guest、idle),是效能調校與瓶頸分析的核心指令之一。本文涵蓋安裝、基本用法、進階參數與實戰解讀。
sudo yum install sysstat
sudo apt-get update && sudo apt-get install sysstat
安裝後,systemctl enable --now sysstat 可啟用定時收集(預設每 10 分鐘),資料儲於 /var/log/sa/。
mpstat
輸出範例:
Linux 5.14.0-284.11.1.el9_2.x86_64 (host) 03/15/2024 _x86_64_ (8 CPU)
10:30:45 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
10:30:45 AM all 12.45 0.00 3.21 1.02 0.00 0.15 0.00 0.00 0.00 83.17
all 為所有核心平均;0、1... 為各核心個別統計。mpstat -P ALL 1 5
-P ALL:列出所有核心(含 all 平均)。1:取樣間隔 1 秒。5:取樣 5 次後結束。mpstat -P 0,3 2 10
mpstat -I SUM 1 3
mpstat -o JSON 1 3 > cpu_stats.json
watch -n 1 'mpstat -P ALL 1 1'
| 現象 | 可能原因 | 後續確認指令 |
|---|---|---|
| %iowait 持續高 | 磁碟/NFS/資料庫 I/O 瓶頸 | iostat -xz 1, iotop |
| %sys 异常高 | 系統呼叫過多、鎖競爭、中斷風暴 | pidstat -w 1, perf top |
| %steal 高 (VM) | 宿主機 CPU 過度承諾 | 聯繫雲端供應商、調整實例規格 |
| 單核心 %usr 100% | 單執行緒程式計算密集 | top -H, perf record -g |
| %nice 高 | 低優先序批次作業運行中 | ps -eo pid,ni,cmd --sort=-ni | head |
sysstat 守護程式定期寫入 /var/log/sa/saDD(DD 為日期),可用 sar 回顧:
sar -u -f /var/log/sa/sa15 # 查看 15 號全天 CPU 歷史
sar -P ALL 1 10 # 即時模式等同 mpstat
mpstat 輕量、標準、無需額外依賴,是 Linux 管理員「第一時間瞭解 CPU 狀態」的首選工具。掌握 -P ALL、取樣間隔與 %iowait/%steal 解讀,即可快速定位效能瓶頸方向。