性能優化--CPU使用率

usr 用戶態CPU時間

nice 低優先級用戶態CPU時間

system 系統態CPU時間

idle 空閒時間

iowait 等待IO的時間

irq 硬中斷的時間

softirq 軟中斷的時間

steal 當系統運行在虛擬機中時,被其他CPU佔用的時間。

gust 通過虛擬化,運行其他操作系統的時間。

gust_nice 以低優先級運行虛擬化的時候。

CPU使用率 = 1- 空閒時間/CPU總時間

 

用戶態佔用過多的CPU,應着重排查用戶進程的性能問題。

系統態佔用過多的CPU,應着重排查系統調用,內核進程的問題。

IO等待時機過長,應着重排查系統存儲的IO問題。

軟中斷硬中斷,應着重排查內核中的中斷服務程序。

top,perf top -g 進程號 必須加-g才能顯示函數調用信息。看exectue_ex下的函數調用。

 

碰到CPU佔用率過高,但是top看不到CPU佔用高的進程的情況可能是:

1、進程不斷因爲某種原因(段錯誤等)退出之後,被監視進程不斷重啓。

2、在進程內部通過exec調用的外部命令。這些命令進程只運行很短的時間就退出,一般很難用top來監控。

 

用工具https://github.com/brendangregg/perf-tools/blob/master/execsnoop可以監視出存在時間很短的進程。

也可以用perf record -g觀察15秒,然後用perf report查看結果,可以定位出佔用CPU使用率高的進程。

 

碰到CPU使用率過高問題的定位思路:

1、top命令查看CPU使用率,定位使用率高的進程,如果有,直接perf查看進程,定位到函數位置,走讀代碼,發現問題。

2、如果top命令查看CPU使用率高,但查不到使用率高的進程,考慮短時進程問題。用execsnoop工具定位短時進程。用perf record -g 和perf report定位短時進程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章