要測試linux系統性能及調優,首先要從全局檢查linux的平均負載node
系統平均負載,平均負載是指單位時間內,系統處於可運行狀態和不可中斷狀態的平均進程數,也就是平均活躍進程數,它和 CPU 使用率並無直接關係。linux
可運行狀態的進程,指正在使用 CPU 或者正在等待 CPU 的進程,也就是咱們經常使用 ps 命令看到的,處於 R 狀態(Running 或 Runnable)的進程。性能
不可中斷狀態的進程,指正處於內核態關鍵流程中的進程,而且這些流程是不可打斷的,好比最多見的是等待硬件設備的 I/O 響應,也就是咱們在 ps 命令中看到的 D 狀態(Uninterruptible Sleep,也稱爲 Disk Sleep)的進程。好比,當一個進程向磁盤讀寫數據時,爲了保證數據的一致性,在獲得磁盤迴復前,它是不能被其餘進程或者中斷打斷的,這個時候的進程就處於不可中斷狀態。若是此時的進程被打斷了,就容易出現磁盤數據與進程數據不一致的問題。因此,不可中斷狀態其實是系統對進程和硬件設備的一種保護機制。測試
所以,你能夠簡單理解爲,平均負載其實就是平均活躍進程數。平均活躍進程數,直觀上的理解就是單位時間內的活躍進程數,但它其實是活躍進程數的指數衰減平均值。這個「指數衰減平均」的詳細含義你不用計較,這只是系統的一種更快速的計算方式,你把它直接當成活躍進程數的平均值也沒問題。優化
平均負載是單位時間內平均活躍進程數,則 平均負載/CPU個數=單位CPU處理的活躍進程數。那麼最理想的,就是每一個 CPU 上都恰好運行着一個進程,這樣每一個 CPU 都獲得了充分利用。ui
假如系統有2個CPUspa
從上面的計算能夠得出結論,平均負載最理想的狀況是等於 CPU 個數。操作系統
#查看系統cpu個數---20個
[root@node2 ~]# grep 'model name' /proc/cpuinfo | wc -l 20
在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號。
已知平均負載最理想的狀況是等於 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 利用三個不一樣時間間隔的平均值,分析系統負載趨勢
3.4 監控平均負載變化趨勢,判斷性能
通常當平均負載高於 CPU 數量 70% 的時候,你就應該分析排查負載高的問題了.;
但最推薦的方法,仍是把系統的平均負載監控起來,而後根據更多的歷史數據,判斷負載的變化趨勢。當發現負載有明顯升高趨勢時,好比說負載翻倍了,你再去作分析和調查。