1、CPU核數
1)top按1
2)cat /proc/cpuinfo
3) 物理CPU:cat /proc/cpuinfo |grep "physical id" |sort|uniq|wc -l
4)core id:cat /proc/cpuinfo |grep "core id" |sort|uniq|wc -l
5)總核數 = 物理CPU個數 X 每顆物理CPU的核數
6)總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超線程數(cat /proc/cpuinfo| grep "processor"| wc -l)
2、CPU佔用率
看CPU是否有問題,看CPU總的佔用率
3、平均負載
含義:過去的1,5,15分鐘的平均負載
平均負載:平均的活躍進程數(運行(R),可運行(S),不可中斷(D)),特點:歷史、平均、趨勢
引申:進程狀態
忙的趨勢是可接受還是不可接受?
Load<0.7核數 負載不高,不忙
0.7核數<Load<3*核數 不清楚,需要繼續分析
Load>3*核數 負載高,忙
Cpu佔用率和平均負載的關係
1)平均負載load average高,就一定cpu佔用率高嗎?
平均負載高,意味着進程多。
A.如果這些進程每個進程佔用cpu也高的話(代碼複雜度高,有大量循環)(cpu密集進程,視頻編碼,人工智能,圖片處理),就肯定服務器系統cpu佔比高
B.如果這些進程每個進程佔用cpu很低的話(IO密集型進程,讀寫數據,佔用cpu很低),就肯定服務器系統cpu佔比不高
2)cpu佔用高,就一定平均負載load average高嗎?
A. 不一定:如果cpu佔用高,但是隻有少量進程,多核cpu,
B. 有可能:如果cpu佔用高,同時有很多進程運行,就會load average高
3)平均負載高有哪些原因造成?
進程多造成,應用程序,cpu密集型,任務多,要大量統計,計算,如何進一步分析?看vmstat 的R列,如果R多,就 用top進一步分析進程,進一步dump線程,如果B列多,就分析IO
4、top
1)Id-低,意味着cpu有瓶頸
2)Us-高,繼續用top監控進程(找出cpu佔比高的進程),dump線程
3)Sy-高,看內核可以優化的內核參數(一般較少出現問題 )
那麼對於內核態造成的佔用高和用戶態造成的佔用高,要考慮下一步怎麼分析,什麼導致的高,往哪個方向考慮
4)Wa-高,進一步分析IO
5)Si-高,進一步分析網絡
5、vmstat
對操作系統整體的虛擬內存、進程、CPU活動進行監控
vmstat 1 5:每1秒採集一次服務器狀態,採集5次