# 安裝Go語言環境
sudo yum install -y golang
# 安裝cpustat
go get github.com/uber-common/cpustat
查看整體CPU使用情況
sudo cpustat -a
關注指標:%CPU(總占用)、%usr(用戶態)、%sys(內核態),若%usr或%sys持續>85%,可能存在瓶頸。
監控特定進程
sudo cpustat -p <PID>
替換<PID>為進程ID,定位高CPU占用的具體進程。
輸出詳細信息
sudo cpustat -l # 顯示進程命令行
sudo cpustat -c # 顯示CPU詳細統計(用戶/內核/空閑時間)
定時監控與記錄
sudo cpustat -i 5 -o cpu_log.csv # 每5秒記錄一次,保存為CSV
| 指標 | 健康范圍 | 風險閾值 | 含義 |
|---|---|---|---|
| 用戶態CPU% | 60%~70% | >85% | 應用程序代碼低效(如死循環、復雜算法) |
| 內核態CPU% | 10%~20% | >30% | 系統調用頻繁(如鎖競爭、上下文切換) |
| 上下文切換 | <1萬/秒 | >3萬/秒 | 線程頻繁切換導致CPU資源浪費 |
cs(上下文切換)和runq-sz(運行隊列),判斷CPU是否過載。參考來源: