1. 程式人生 > >LINUX下CPU Load Average的一點研究

LINUX下CPU Load Average的一點研究

背景:

公司的某個系統工作在基於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命令查詢系統的平均負載:

 

本文參考文章:

參考文章裡的三篇文章寫得都非常好,如果你想了解更多一點,請一定深入拜讀