LINUX下CPU Load Average的一點研究
阿新 • • 發佈:2018-12-19
背景:
公司的某個系統工作在基於Linux的Cent OS下,一個host下同時連線了許多client, 最近某臺Host總是顯示CPU Load Average過高,我們單純的以為是CPU的佔用過高,其實沒這麼簡單,於是老闆讓我趁這個機會研究一下CPU Load Average,最近剛好想開學習LINUX的文章,就把這個當成一個起點吧。
Load Average(平均負載)基本概念:
- Load 指的是執行佇列(run-queue)的長度:L = 等待程序的數目 + 執行程序的數目
- Load Average指的是在一段時間內CPU正在處理以及等待CPU處理的程序數之和的統計資訊,也就是CPU使用佇列的長度的統計資訊。
- Load Average反映了CPU的使用情況和申請情況.
Load Average(平均負載)和CPU佔用率的區別:
- Load Average所包含的資訊不是CPU的使用率狀況
- 多工環境下,系統分配時間片以後,是否使用完全使用時間片取決於程序,因此完全可能出現低CPU利用率而高Load Average的情況
Load Average的計算:
- 在多處理器系統中,負載閥值是基於核心的數量決定的。以 100% 負載計算,1.00 表示單個處理器,而 2.00 則說明有兩個雙處理器,那麼 4.00 就說明主機具有四個處理器。超過這個閥值就表示系統過載了
- Load Average的實時計算公式:
- load(t) = load(t-1) e^(-5/60) + n (1 - e^(-5/60)),迭代計算,其中n為run-queue的長度
Linux下通過top或者uptime命令可以檢視系統的Load Average,它顯示的是系統在1分鐘,5分鐘,15分鐘之內的Load Average值:
- 1分鐘的平均值通常表示峰值,應該著眼於5分鐘或者15分鐘的平均數值
- 遠端連線到一臺LINUX上通過top命令查詢系統的平均負載:
- 遠端連線到一臺LINUX上通過uptime命令查詢系統的平均負載:
本文參考文章:
- http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html
- http://blog.csdn.net/naivebaby/article/details/1386577
- http://wenku.baidu.com/view/9cc0ed4ce518964bcf847c21.html
參考文章裡的三篇文章寫得都非常好,如果你想了解更多一點,請一定深入拜讀