【Linux性能調優一】觀大局:系統平均負載load average

要測試linux系統性能及調優,首先要從全局檢查linux的平均負載node

1.什麼是平均負載 load average

系統平均負載,平均負載是指單位時間內,系統處於可運行狀態不可中斷狀態的平均進程數,也就是平均活躍進程數,它和 CPU 使用率並無直接關係。linux

可運行狀態的進程,指正在使用 CPU 或者正在等待 CPU 的進程,也就是咱們經常使用 ps 命令看到的,處於 R 狀態(Running 或 Runnable)的進程。性能

不可中斷狀態的進程,指正處於內核態關鍵流程中的進程,而且這些流程是不可打斷的,好比最多見的是等待硬件設備的 I/O 響應,也就是咱們在 ps 命令中看到的 D 狀態(Uninterruptible Sleep,也稱爲 Disk Sleep)的進程。好比,當一個進程向磁盤讀寫數據時,爲了保證數據的一致性,在獲得磁盤迴復前,它是不能被其餘進程或者中斷打斷的,這個時候的進程就處於不可中斷狀態。若是此時的進程被打斷了,就容易出現磁盤數據與進程數據不一致的問題。因此,不可中斷狀態其實是系統對進程和硬件設備的一種保護機制。測試

所以,你能夠簡單理解爲,平均負載其實就是平均活躍進程數。平均活躍進程數,直觀上的理解就是單位時間內的活躍進程數,但它其實是活躍進程數的指數衰減平均值。這個「指數衰減平均」的詳細含義你不用計較,這只是系統的一種更快速的計算方式,你把它直接當成活躍進程數的平均值也沒問題。優化

2.爲何監視平均負載

  平均負載是單位時間內平均活躍進程數,則 平均負載/CPU個數=單位CPU處理的活躍進程數。那麼最理想的,就是每一個 CPU 上都恰好運行着一個進程,這樣每一個 CPU 都獲得了充分利用。ui

  假如系統有2個CPUspa

  • 當平均負載爲 2 時,意味着全部的 CPU 都恰好被徹底佔用
  • 當平均負載爲 1 時,意味着全部的 CPU 有50%的空閒
  • 當平均負載爲 4 時,意味着全部的有一半的進程競爭不到CPU

  從上面的計算能夠得出結論,平均負載最理想的狀況是等於 CPU 個數操作系統

#查看系統cpu個數---20個
[root@node2 ~]# grep 'model name' /proc/cpuinfo | wc -l 20

3.如何查看平均負載

  在Linux系統中,uptime、w、top等命令都會有系統平均負載load average的輸出code

[root@node2 ~]# uptime
 10:10:44 up 17 days,  1:06,  7 users,  load average: 0.05, 0.10, 0.10
[root@node2 ~]# w
 10:10:54 up 17 days,  1:06,  7 users,  load average: 0.04, 0.10, 0.10
[root@node2 ~]# top
top - 10:10:57 up 17 days,  1:06,  7 users,  load average: 0.04, 0.10, 0.10
[root@node2 ~]# tload 
0.01, 0.06, 0.07

 命令輸出的最後內容表示在過去的一、五、15分鐘內運行隊列中的平均進程數量。blog

[root@node2 ~]# cat /proc/loadavg       ------查看系統平均負載
0.01 0.05 0.06 1/1694 83634

 /proc文件系統是一個虛擬的文件系統,不佔用磁盤空間,它反映了當前操做系統在內存中的運行狀況,查看/proc下的文件能夠了解到系統的運行狀態。

前三個數字表示在過去的一、五、15分鐘內運行隊列中的平均進程數量。後面兩個一個的分子是正在運行的進程數,分母是進程總數;另外一個是最近運行的進程ID號。

3.案例分析——平均負載爲多少時合理

已知平均負載最理想的狀況是等於 CPU 個數,那多大的時候能說明系統負載高?或是多小的時候就能說明系統負載很低呢?三個平均負載怎麼使用?

  3.1 首先你要知道系統有幾個 CPU——20個

#查看系統cpu個數---20個
[root@node2 ~]# grep 'model name' /proc/cpuinfo | wc -l
20

  3.2 查看平均負載

[root@node2 ~]# uptime
10:10:44 up 17 days,  1:06,  7 users,  load average: 0.05, 0.10, 0.10

  平均負載=CPU數【最理想】;

  平均負載>CPU數【過載】;

  平均負載<CPU數【浪費】

  3.3 利用三個不一樣時間間隔的平均值,分析系統負載趨勢

    • 三個值基本相同,或者相差不大,說明系統負載很平穩。
    • 1 分鐘的值遠小於 15 分鐘的值,就說明系統最近 1 分鐘的負載在減小,而過去 15 分鐘內卻有很大的負載。
    • 若是 1 分鐘的值遠大於 15 分鐘的值,就說明最近 1 分鐘的負載在增長,這種增長有可能只是臨時性的,也有可能還會持續增長下去,因此就須要持續觀察。一旦 1 分鐘的平均負載接近或超過了 CPU 的個數,就意味着系統正在發生過載的問題,這時就得分析調查是哪裏致使的問題,並要想辦法優化了

  3.4 監控平均負載變化趨勢,判斷性能

    通常當平均負載高於 CPU 數量 70% 的時候,你就應該分析排查負載高的問題了.;

    但最推薦的方法,仍是把系統的平均負載監控起來,而後根據更多的歷史數據,判斷負載的變化趨勢。當發現負載有明顯升高趨勢時,好比說負載翻倍了,你再去作分析和調查。

相關文章
相關標籤/搜索