關於linux load average的深入瞭解

    top是運維人員很常用的一個命令,但是關於裏面load average這個數值的理解,一直以來都沒搞清楚,偶爾碰見服務器上cpu使用率不高但load average數值卻很高的情況。在網上找到一篇文章,深受啓發,轉載過來備查並對原作者表示感謝。

通俗來說,判斷cpu是否處於“很疲憊”的狀態,從兩個維度來綜合判定:

1、cpu使用率   2、load average

   cpu先解釋兩個概念:“佔有時間”和“使用時間”

  • 佔有時間:cpu給一個任務分配一個時間片,在這個時間片內,其他任務就無法在使用cpu

  • 使用時間:在時間片內處理這個任務實際消耗的時間。當分配時間片以後,是否使用完全取決於使用者使。舉個通俗的例子,去打電話,電話管理員給每個人分配1分鐘的時間,但是可能翻電話本花了20秒,所以實際使用時間是40秒。

   cpu使用率比較容易理解,即cpu在一段時間內被使用的情況,如果被佔用時間很高,那麼就需要考慮CPU是否已經處於超負荷運作,長期超負荷運作對於機器本身來說是一種損害,因此必須將CPU的利用率控制在一定的比例下,以保證機器的正常運作

    然後詳細說load averageload average是在一段時間內CPU正在處理以及等待CPU處理的進程數之和的統計信息,也就是CPU使用隊列的長度的統計信息,反映了對於cpu資源競爭的情況,load高,說明太多的任務申請cpu資源,而cpu一段時間內能分配的時間片數量是固定的,這種情況下就導致cpu必須馬不停蹄毫不休息的持續工作,長期下去對cpu健康不利;並且此時cpu就出現了瓶頸問題,因爲好多任務都要排長隊等待cpu資源而得不到及時的處理。

接下來再說開篇的問題,cpu使用率不高,但是load average卻很高的情況

理解佔有時間和使用時間就可以知道,當分配時間片以後,是否使用完全取決於使用者,因此完全可能出現低利用率高Load Average的情況。由此來看,僅僅從CPU的使用率來判斷CPU是否處於一種超負荷的工作狀態還是不夠的,必須結合Load Average來全局的看CPU的使用情況和申請情況。

    附上load average 數值的計算公式:

    load(t) = load(t-1) e^(-5/60) + n (1 - e^(-5/60)),迭代計算,其中n爲run-queue length。


    參考文章:http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html

   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章