cpu性能篇:load average 負載均衡

一、什麼是平均負載

正確定義:單位時間內,系統中處於可運行狀態和不可中斷狀態的平均進程數。

錯誤定義:單位時間內的cpu使用率。

可運行狀態的進程:正在使用cpu或者正在等待cpu的進程,即ps aux命令下STAT處於R狀態的進程

不可中斷狀態的進程:處於內核態關鍵流程中的進程,且不可被打斷,如等待硬件設備IO響應,ps命令D狀態的進程

理想狀態:每個cpu上都有一個活躍進程,即平均負載數等於cpu數

過載經驗值:平均負載高於cpu數量70%的時候

 

二、相關命令

cpu核數: lscpu、 grep 'model name' /proc/cpuinfo | wc -l

顯示平均負載:uptime、top,顯示的順序是最近1分鐘、5分鐘、15分鐘,從此可以看出平均負載的趨勢

watch -d uptime: -d會高亮顯示變化的區域

strees: 壓測命令,--cpu cpu壓測選項,-i io壓測選項,-c 進程數壓測選項,--timeout 執行時間

mpstat: 多核cpu性能分析工具,-P ALL監視所有cpu

pidstat: 進程性能分析工具,-u 顯示cpu利用率

 

三、平均負載與cpu使用率的區別

CPU使用率:單位時間內cpu繁忙情況的統計

情況1:CPU密集型進程,CPU使用率和平均負載基本一致

情況2:IO密集型進程,平均負載升高,CPU使用率不一定升高

情況3:大量等待CPU的進程調度,平均負載升高,CPU使用率也升高

多個進程競爭CPU會導致上下文切換,從而使系統負載過高

 

四、平均負載過高時,如何調優

工具:stress、sysstat,yum即可安裝

1. CPU密集型進程case:

mpstat -P ALL 5: -P ALL表示監控所有CPU,5表示每5秒刷新一次數據,觀察是否有某個cpu的%usr會很高,但iowait應很低

pidstat -u 5 1:每5秒輸出一組數據,觀察哪個進程%cpu很高,但是%wait很低,極有可能就是這個進程導致cpu飈高

2. IO密集型進程case:

mpstat -P ALL 5: 觀察是否有某個cpu的%iowait很高,同時%usr也較高

pidstat -u 5 1:觀察哪個進程%wait較高,同時%CPU也較高

 

如果iowait上不去,應該使用stress-ng -i 1 --hdd 1 --timeout 600命令來模擬情況

 

3. 大量進程case:

pidstat -u 5 1:觀察那些%wait較高的進程是否有很多

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