系統平均負載load average詳解


1.什么是Load Average?

系統負載(System Load)是系統CPU繁忙程度的度量,即有多少進程在等待被CPU調度(進程等待隊列的長度)。
平均負載(Load Average)是一段時間內系統的平均負載,這個一段時間一般取1分鍾、5分鍾、15分鍾。

2.如何查看Load Average?

top、w、uptime等命令都可以查看系統負載;

3.Load Average的3個數值各是什么意思?

我拿下面的 load average:0.00, 0.01, 0.05 來舉例:

[root@elk2 ~]# uptime
 15:49:22 up 335 days, 23:28,  2 users,  load average: 0.00, 0.01, 0.05

第一位0.00:表示最近1分鍾平均負載
第二位0.01:表示最近5分鍾平均負載
第三位0.05:表示最近15分鍾平均負載

4.Load Average值的含義

4.1單核處理器(例如:1個1核cpu)

假設我們的系統是單CPU單內核的,把它比喻成是一條單向馬路,把CPU任務比作汽車。
當車不多的時候,load <1;
當車占滿整個馬路的時候 load=1;
當馬路都站滿了,而且馬路外還堆滿了汽車的時候,load>1;

4.2多核處理器(例如:2個cpu或一個2核的cpu)

我們經常會發現服務器Load > 1但是運行仍然不錯,那是因為服務器是多核處理器(Multi-core)。
假設我們服務器一個CPU是2核,那么將意味我們擁有2條馬路,我們的Load = 2時,所有馬路都跑滿車輛。

提示:
芯片廠商往往在一個CPU內部,包含多個CPU核心,這被稱為多核CPU。
在系統負荷方面,多核CPU與多個CPU效果類似,所以考慮系統負荷的時候,必須考慮這台電腦有幾個CPU、每個CPU有幾個核心。然后,把系統負荷除以總的核心數,只要每個核心的負荷不超過1.0,就表明電腦正常運行。

5.怎么知道Linux服務器有多少個CPU核心呢?

  • 查看cpu信息命令:
cat /proc/cpuinfo  
  • 查看cpu總核心數命令:
grep 'model name' /proc/cpuinfo | wc -l  
或
grep -c 'model name' /proc/cpuinfo 

6.什么樣的Load Average值得警惕(單核)?

Load < 0.7時:系統很閑,馬路上沒什么車,要考慮多部署一些服務。
0.7 < Load < 1時:系統狀態不錯,馬路可以輕松應對。
Load == 1時:系統馬上要處理不多來了,趕緊找一下原因。
Load > 1時:馬路已經非常繁忙了,進入馬路的每輛汽車都要無法很快的運行。

7.三種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:短期內空閑,中、長期繁忙,不用緊張,系統“擁塞正在好轉”。

8.CPU利用率與Load Average的區別?

CPU利用率,是對一個時間段內CPU使用狀況的統計,通過這個指標可以看出在某一個時間段內CPU被占用的情況,如果CPU被占用時間很高,那么就需要考慮CPU是否已經處於超負荷運作,長期超負荷運作對於機器本身來說是一種損害,因此必須將CPU的利用率控制在一定的比例下,以保證機器的正常運作。

Load Average是 CPU的Load,它所包含的信息不是CPU的使用率狀況,而是在一段時間內CPU正在處理以及等待CPU處理的進程數之和的統計信息,也就是CPU使用隊列的長度的統計信息。

那么CPU利用率與Load Average對於性能測試的意義有什么區別呢?實際上,CPU利用率反映的是CPU被使用的情況,當CPU長期處於被使用而沒有得到足夠的時間休息間歇,那么對於CPU硬件來說是一種超負荷的運作,需要調整使用頻度。而Load Average卻從另一個角度來展現對於CPU使用狀態的描述,Load Average越高說明對於CPU資源的競爭越激烈,CPU資源比較短缺。對於資源的申請和維護其實也是需要很大的成本,所以在這種高Average Load的情況下CPU資源的長期“熱競爭”也是對於硬件的一種損害。

9.如何評估性能需求中合理的Load Average?

一般來說,Load Average是與機器內核數有關的。以一個單核的機器為例,load=0.5表示CPU還有一半的資源可以處理其他的線程請求,load=1表示CPU所有的資源都在處理請求,沒有剩余的資源可以利用了,而load=2則表示CPU已經超負荷運作,另外還有一倍的線程正在等待處理。所以,對於單核機器來說,理想狀態下,Load Average要小於1。同理,對於雙核處理器來說,Load Average要小於2。結論是:多核處理器中,你的Load Average不應該高於處理器核心的總數量。

10.不同核處理器之間的load值怎樣換算?

性能測試中可能遇到這樣的問題,你的線上機器是8核的,但是線下性能測試機只有4核的,那么我用4核機器測試得到的load值是4,換算到8核機器上應該是多少呢?————這里原作者計算錯了,應該是4*4/8=2,即核多了,load值會變小。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM