CPU使用情況之平均負載


 

需求場景:
       新入職公司,需要監控方案,於是先把zabbix里有關OS模塊的監控項全部列出來,並一個一個去研究具體的代表的意思;發現其他的都很容易理解,只要有關CPU監控的就難以理解。於是花了一點時間學習一下,找到一篇比較好的博文,然后根據他寫的跟我自己理解的總結成文。
       
       博文地址:http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages   (這個看着更有意思,自己翻譯出來沒有那個感覺)
 
重點參數:
        load average: 0.01, 0.07, 0.07
 
疑問:
1)這個值代表的是什么意思
2)這個值多大代表負載高
3)這個值達到多少該告警
 
 
一、查看此平均負載值可使用的方法
 
1)top命令
[root@rilo ~]# top
top - 22:36:45 up 4 days, 11:47,  2 users,  load average: 0.00, 0.02, 0.05
Tasks: 116 total,   1 running, 115 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 98.0 id,  1.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1016168 total,    61676 free,   520512 used,   433980 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   333104 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND         
  260 root      20   0       0      0      0 S  0.3  0.0   0:16.01 jbd2/vda1-8     
 5709 root      20   0  157684   2144   1508 R  0.3  0.2   0:00.01 top             
 5752 mysql     20   0 1167784 295128   5756 S  0.3 29.0   5:10.60 mysqld     

 

 
2)uptime命令
[root@rilo ~]# uptime
 22:51:37 up 4 days, 12:02,  2 users,  load average: 0.04, 0.10, 0.07

 

3)w命令
[root@rilo ~]# w
 22:53:03 up 4 days, 12:03,  2 users,  load average: 0.01, 0.07, 0.07
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    202.104.136.232  Mon09   30:21m  0.24s  0.24s -bash
root     pts/1    112.95.38.6      22:34    7.00s  0.00s  0.00s w

 

 

二、這三個值分別所代表的意思

       load average: 0.04, 0.10, 0.07    這三個值分別對應系統在1分鍾5分鍾15分鍾內的平均負載值;

       這個數值越低越好,數值高的話代表系統有問題或者機器負載高。但是門檻是什么呢,如何區分什么是好什么是壞的平均負載值呢?什么樣的平均負載值需要我們關注,什么樣的平均負載值需要我們及時去排查問題?

 
 
三、相關背景(交通的類比)
 
單核處理器的情況:
 
一個單核CPU就如一條單向的公路,假設你是一個橋梁上的交通指揮員,有時候橋上很忙汽車都排成一列通過。然后你想讓別人知道橋梁上的交通情況,一個比較好的衡量標准是有多少汽車在等待在特定的時間內。如果沒有汽車在等待,過來的司機知道過來就可以通過。如果汽車有在等待,過來的司機就知道他們得排隊才能通過。
 
所以交通指揮員,使用一套數字標識系統:
1)0.00 表示沒有車在橋上,實際上,0.00到1.00之間表示沒有汽車在排隊等待,只要過來就可以通過
2)1.00 表示橋梁上剛好滿負荷,剛剛好
3)超過1.00意味着需要等待,2.00意味着有兩車道的汽車總數,一車道的汽車在橋上,一車道的汽車在等待。3.00意味着有三車道的汽車總數,一車道在橋上,兩車道在等待。
 
橋相當於CPU,汽車過橋就是使用CPU的過程,等待就是等待使用CPU的過程,Unix將其稱為 運行隊列長度,進程數總和等於正在運行進程數與等待運行數總和。
 
交通指揮員希望橋梁上永遠不要出現等待,因此,你的CPU負載應該保持在1.00以下;如果偶爾橋上的峰值超過1.00,那么不需要擔心,如果一直在1.00以上,就該擔心了;
 
因此,你認為最好的負載是1.00?
 
不完全是,事實上,管理員會在0.7的地方標注一個閥值;
排查階段:在平均負載開始大於0.7的時候,是時候該排查是什么原因導致高負載了
解決階段:當負載高於1.0的時候,就可以找到問題並修復他了
凌晨階段:如果你的負載高於5.0.已經是一個很嚴重的問題了,那么不知道什么情況下機器就會有問題
 
 
多核處理器的情況:
 
當有一個四核處理器的時候,負載3.00也是健康的;在多處理器系統上,負載與可用的核數相關,百分之百用完的標志在單核處理器上是1.00,雙核處理器上是2.00,四核處理器上是4.00。
 
回到上面的橋梁上的例子,1.00意味着只有一條公路。在這一條公路上,意味着是滿的。在一座兩條公路的橋上,1.00以為者使用了百分之五十,僅僅只有一條路是滿的。在單核處理器是,1.00是滿負載,在雙核處理器上,2.00是滿負載
 
 
 
四、多核與多處理器
 
對於性能目標,一個具有雙核的處理器與兩個單核處理器是否是一樣的?
 
是的,這里面有很多關於緩存和處理器之間頻率的關系,盡管有這些東西,為了調整CPU的負載值,核的總數才是最重要的,不管這些核是怎么分布在物理處理器上
 
我們得出兩個新的規則:
1)核的個數=最大的負載數 :在多核系統上,你的負載不應該超過核的數量
2)核心是核心,核在CPU上是如何分布的並不重要,兩個四核處理器=四個雙核處理器=八個單核處理器;他們都是8個核
 


免責聲明!

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



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