cpustat 是一個強大的命令行工具,用于監控和分析 CPU 的性能。通過 cpustat,你可以獲取 CPU 的使用率、上下文切換次數、中斷次數等關鍵指標,從而幫助你診斷 CPU 瓶頸。以下是如何使用 cpustat 來診斷 CPU 瓶頸的步驟:
cpustat在大多數 Linux 發行版中,cpustat 是 sysstat 包的一部分。你可以使用包管理器來安裝它。
# 在 Debian/Ubuntu 上
sudo apt-get update
sudo apt-get install sysstat
# 在 CentOS/RHEL 上
sudo yum install sysstat
# 在 Fedora 上
sudo dnf install sysstat
運行 cpustat 默認會顯示當前 CPU 的統計信息。
cpustat
你可以指定時間間隔和輸出次數來收集數據。
cpustat -c 5 10
這會每 5 秒收集一次數據,共收集 10 次。
以下是一些關鍵指標,可以幫助你診斷 CPU 瓶頸:
查看 CPU 使用率:
%user 和 %system 的總和接近或超過 100%,說明 CPU 正在被充分利用。%idle 很低(例如低于 10%),說明 CPU 可能處于飽和狀態。檢查 I/O 等待:
%iowait 很高,說明 CPU 在等待 I/O 操作完成,可能存在 I/O 瓶頸。檢查中斷和軟中斷:
%irq 或 %softirq 很高,說明 CPU 在處理大量中斷,可能是硬件設備或驅動程序的問題。虛擬化環境:
%steal 時間,如果很高,說明虛擬機可能在等待物理 CPU 資源。假設你運行了以下命令并得到了以下輸出:
cpustat -c 5 10
輸出示例:
Linux 5.4.0-42-generic (hostname) 05/01/2023 _x86_64_ (8 CPU)
avg-cpu: %user %system %idle %iowait %steal %irq %softirq %guest %gnice
avg-cpu: 75.34 12.45 9.87 1.23 0.00 0.67 0.56 0.00 0.00
avg-cpu: 74.56 12.78 9.45 1.34 0.00 0.70 0.58 0.00 0.00
...
分析:
%user 和 %system 的總和為 87.81%,說明 CPU 正在被充分利用。%idle 為 9.87%,雖然不是非常低,但結合 %user 和 %system 的高值,說明 CPU 可能處于飽和狀態。%iowait 為 1.23%,較低,說明 I/O 瓶頸可能不是主要問題。%irq 和 %softirq 都較低,說明中斷處理不是主要瓶頸。如果初步分析表明 CPU 瓶頸存在,你可以進一步使用其他工具和方法來深入診斷:
通過綜合使用這些工具和方法,你可以更全面地診斷和解決 CPU 瓶頸問題。