高cpu進程排查方法

有時候對於C或者C++程序來說,會比較高的佔用電腦cpu。
而且程序一般運行在linux環境下,剛好之前排查過這類問題,作個簡單的記錄。

一般採用三個步驟,可大致定位問題位置:
(1)使用 top 命令查看cpu佔用較高的前幾位程序,確定相應的進程。

(2)對於高佔用cpu的程序,依次分析。使用 top -H -p PID,進一步查看該進程內,哪些線程在高佔用cpu。將目標縮小到線程級別。

(3)使用strace -p 線程ID,進一步查看線程內,哪個函數調用在高佔cpu。這樣可以基礎對照着代碼查看。

本人要排查時,發現主要是對於系統函數的頻繁調用會很容易導致高cpu,如對select或者poll的超時時間設置過短,導致頻繁調用select或者poll等。

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