一、什么是Load Average?
系統負載(System Load)是系統CPU繁忙程度的度量,即有多少進程在等待被CPU調度(進程等待隊列的長度)。
平均負載(Load Average)是一段時間內系統的平均負載,這個一段時間一般取1分鍾、5分鍾、15分鍾。
二、如何查看Load Average?
top命令,w命令,uptime等命令都可以查看系統負載;
三、Load Average的3個數值各是什么意思?
我拿上圖中的 load average:1.97,2.14,2.99 來舉例:
第一位1.97:表示最近1分鍾平均負載
第二位2.14:表示最近5分鍾平均負載
第三位2.99:表示最近15分鍾平均負載
四、Load Average值的含義:
1、單核處理器(例如:1個1核cpu)
假設我們的系統是單CPU單內核的,把它比喻成是一條單向馬路,把CPU任務比作汽車。
當車不多的時候,load <1;
當車占滿整個馬路的時候 load=1;
當馬路都站滿了,而且馬路外還堆滿了汽車的時候,load>1;
2、多核處理器 (例如:2個cpu或一個2核的cpu)
我們經常會發現服務器Load > 1但是運行仍然不錯,那是因為服務器是多核處理器(Multi-core)。
假設我們服務器一個CPU是2核,那么將意味我們擁有2條馬路,我們的Load = 2時,所有馬路都跑滿車輛。
提示:
芯片廠商往往在一個CPU內部,包含多個CPU核心,這被稱為多核CPU。
在系統負荷方面,多核CPU與多個CPU效果類似,所以考慮系統負荷的時候,必須考慮這台電腦有幾個CPU、每個CPU有幾個核心。然后,把系統負荷除以總的核心數,只要每個核心的負荷不超過1.0,就表明電腦正常運行。
怎么知道Linux服務器有多少個CPU核心呢?
查看cpu信息命令:
cat /proc/cpuinfo
查看cpu總核心數命令:
grep 'model name' /proc/cpuinfo | wc -l
或
grep -c 'model name' /proc/cpuinfo
五、什么樣的Load Average值得警惕(單核)?
Load < 0.7時:系統很閑,馬路上沒什么車,要考慮多部署一些服務
0.7 < Load < 1時:系統狀態不錯,馬路可以輕松應對
Load == 1時:系統馬上要處理不多來了,趕緊找一下原因
Load > 1時:馬路已經非常繁忙了,進入馬路的每輛汽車都要無法很快的運行
六、三種Load Average值,應該看哪個(單核)?
通常我們先看15分鍾load,如果load很高,再看1分鍾和5分鍾負載,查看是否有下降趨勢。
1分鍾負載值 > 1,那么我們不用擔心,但是如果15分鍾負載都超過1,我們要趕緊看看發生了什么事情。所以我們要根據實際情況查看這三個值。
現在相信大家都知道,"load average"一共返回三個平均值:1分鍾系統負荷、5分鍾系統負荷,15分鍾系統負荷;
如果只有1分鍾的系統負荷大於1.0,其他兩個時間段都小於1.0,這表明只是暫時現象,問題不大。
如果15分鍾內,平均系統負荷大於1.0(調整CPU核心數之后),表明問題持續存在,不是暫時現象。所以,你應該主要觀察"15分鍾系統負荷",將它作為電腦正常運行的指標。
結合具體情況具體分析(單核):
1分鍾Load>1,5分鍾Load<1,15分鍾Load<1:短期內繁忙,中長期空閑,初步判斷是一個“抖動”,或者是“擁塞前兆”
1分鍾Load>1,5分鍾Load>1,15分鍾Load<1:短期內繁忙,中期內緊張,很可能是一個“擁塞的開始”
1分鍾Load>1,5分鍾Load>1,15分鍾Load>1:短、中、長期都繁忙,系統“正在擁塞”
1分鍾Load<1,5分鍾Load>1,15分鍾Load>1:短期內空閑,中、長期繁忙,不用緊張,系統“擁塞正在好轉”