有時候對於C或者C++程序來說,會比較高的佔用電腦cpu。
而且程序一般運行在linux環境下,剛好之前排查過這類問題,作個簡單的記錄。
一般採用三個步驟,可大致定位問題位置:
(1)使用 top 命令查看cpu佔用較高的前幾位程序,確定相應的進程。
(2)對於高佔用cpu的程序,依次分析。使用 top -H -p PID,進一步查看該進程內,哪些線程在高佔用cpu。將目標縮小到線程級別。
(3)使用strace -p 線程ID,進一步查看線程內,哪個函數調用在高佔cpu。這樣可以基礎對照着代碼查看。
本人要排查時,發現主要是對於系統函數的頻繁調用會很容易導致高cpu,如對select或者poll的超時時間設置過短,導致頻繁調用select或者poll等。