歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 理解Linux Load Average

理解Linux Load Average

日期:2017/2/28 16:07:52   编辑:Linux教程

Linux load average

系統平均負載被定義為在特定時間間隔內運行隊列中的平均進程數。如果一個進程滿 足以下條件則其就會位於運行隊列中:

- 它沒有在等待I/O操作的結果

- 它沒有主動進入等待狀態(也就是沒有調用’wait’)

- 沒有被停止(例如:等待終止)

SIP的第四期結束了,因為控制策略的豐富,早先的的壓力測試結果已經無法反映在高並發和高壓力下SIP的運行狀況,因此需要重新作壓力測試。跟在測試人員後面做了快一周的壓力測試,壓力測試的報告也正 式出爐,本來也就算是告一段落,但第二天測試人員說要修改報告,由於這次作壓力測試的同學是第一次作,有一個指標沒有注意,因此需要修改幾個測試結果。那 個沒有注意的指標就是load average,他和我一樣開始只是注意 了CPU,內存的使用狀況,而沒有太注意這個指標,這個指標與他們通常的 限制(10左右)有差別。重新測試的結果由於這個指標被要求壓低,最後的 報告顯然不如原來的好看。自己也沒有深入過壓力測試,但是覺得不搞明白對將來機器配置和擴容都會有影響,因此去問了DBA和SA,得到的結果 相差很大,看來不得不自己去找找問題的根本所在了。

通過下面的幾個部分的了解,可以一步一步的找出Load Average在壓力測試中真正的作用。

CPU時間片

為 了提高程序執行效率,大家在很多應用中都采用了多線程模式,這樣可以將原來的序列化執行變為並行執行,任務的分解以及並行執行能夠極大地提高程序的運行效 率。但這都是代碼級別的表現,而硬件是如何支持的呢?那就要靠CPU的時 間片模式來說明這一切。程序的任何指令的執行往往都會要競爭CPU這個最 寶貴的資源,不論你的程序分成了多少個線程去執行不同的任務,他們都必須排隊等待獲取這個資源來計算和處理命令。先看看單CPU的情況。下面兩圖描述了時間片模式 和非時間片模式下的線程執行的情況:

圖 1 非時間片線程執行情況

圖 2 非時間片線程執行情 況

在圖一中可以看到,任何線程如果都排隊等待CPU資源的獲取, 那麼所謂的多線程就沒有任何實際意義。圖二中的CPU Manager只 是我虛擬的一個角色,由它來分配和管理CPU的使用狀況,此時多線程將會 在運行過程中都有機會得到CPU資源,也真正實現了在單CPU的情況下實現多線程並行處理。

多CPU的情況只是單CPU的擴展,當所有的CPU都滿負荷運作的時候,就會對每一個CPU采用時間片的方式來提 高效率。

在Linux的內核處理過程中,每一個進程默認會有一個固定的 時間片來執行命令(默認為1/100秒),這段時間內進程被分配到CPU,然後獨占使用。如果使用完,同時未到時間片的規定時間,那麼就主動放棄CPU的占用,如果到時間片尚未完成工作,那麼CPU的使用權也會被收回,進程將會被中斷掛起等待下一個時間片。

CPU利用率和Load Average的區別

壓力測試不僅需要對業務場景的並發用戶等壓力參數作模擬,同時也需要在壓力測試過程中隨時關注機器的性能情況,來確保壓力測試的有效性。當服務 器長期處於一種超負荷的情況下運行,所能接收的壓力並不是我們所認為的可接受的壓力。就好比項目經理在給一個人估工作量的時候,每天都讓這個人工作12個小時,那麼所制定的項目計劃就不是一個合理的計劃,那個人遲早會垮掉,而影響整體的項目進度。

CPU利用率在過去常常被我們這些外行認為是判斷機器是否已經到了滿負荷的一個標准,看到50%-60%的使用率就認為機器就已經壓到了臨界了。CPU利用率,顧名思義就是對於CPU的使用狀況,這是對一個時間段內CPU使用狀況的統計,通過 這個指標可以看出在某一個時間段內CPU被占用的情況,如果被占用時間很 高,那麼就需要考慮CPU是否已經處於超負荷運作,長期超負荷運作對於機 器本身來說是一種損害,因此必須將CPU的利用率控制在一定的比例下,以 保證機器的正常運作。

Load Average是CPU的Load,它所包 含的信息不是CPU的使用率狀況,而是在一段時間內CPU正在處理以及等待CPU處理的進程數之和的統計信息,也就是CPU使用隊列的長度的統 計信息。為什麼要統計這個信息,這個信息的對於壓力測試的影響究竟是怎麼樣的,那就通過一個類比來解釋CPU利用率和Load Average的區別以及對於壓力測試的指導意義。

我們將CPU就類比 為電話亭,每一個進程都是一個需要打電話的人。現在一共有4個電話亭(就 好比我們的機器有4核),有10個人需要打電話。現在使用電話的規則是管理員會按照順序給每一個人輪流分配1分鐘的使用電話時間,如果使用者在1分鐘內使用完畢,那麼可以立刻將電話使用權返還給管理員,如果到了1分鐘電話使用者還沒有使用完畢,那麼需要重新排隊,等待再次分配使用。

圖 3 電話使用場景

上圖中對於使用電話的用戶又作了一次分類,1min的代表這些 使用者占用電話時間小於等於1min,2min表示使用者占用電話時間小於等於2min,以此類推。根據電話使用規則,1min的用戶只需要得到一次分配即可完成通話,而其他兩類用戶需要排隊兩次到三次。

電 話的利用率 = sum (active use cpu time)/period

Copyright © Linux教程網 All Rights Reserved