壓力測試必知

Load average

系統平均負載被定義爲在特定時間間隔內運行隊列中的平均進程樹。
如果一個進程滿足以下條件則其就會位於運行隊列中:
- 它沒有在等待I/O操作的結果
- 它沒有主動進入等待狀態(也就是沒有調用’wait’)
- 沒有被停止(例如:等待終止)
舉例:
➜ ~ uptime
16:19 up 2 days, 5:59, 5 users, load averages: 2.24 2.71 2.85
命令輸出的最後內容表示在過去的1、5、15分鐘內運行隊列中的平均進程數量。
一般來說只要每個CPU的當前活動進程數不大於3那麼系統的性能就是良好的,如果每個CPU的任務數大於5,那麼就表示這臺機器的性能有嚴重問題。對於上面的例子來說,假設系統有兩個CPU,那麼其每個CPU的當前任務數爲:2.85/2=1.42。這表示系統比較空閒。


linux下查看load的命令

  • cat /proc/loadavg
  • uptime
    輸出結果爲:
    16:45:13 up 246 days, 23:11, 1 user, load average: 0.14, 0.14, 0.14
  • w
    功能說明:顯示目前登入系統的用戶信息。
    語  法:w [-fhlsuV][用戶名稱]
    補充說明:執行這項指令可得知目前登入系統的用戶有那些人,以及他們正在執行的程序。單獨執行w指令會顯示所有的用戶,您也可指定用戶名稱,僅顯示某位用戶的相關信息。
    參  數:
      -f  開啓或關閉顯示用戶從何處登入系統。
      -h  不顯示各欄位的標題信息列。
      -l  使用詳細格式列表,此爲預設值。
      -s  使用簡潔格式列表,不顯示用戶登入時間,終端機階段作業和程序所耗費的CPU時間。
      -u  忽略執行程序的名稱,以及該程序耗費CPU時間的信息。
      -V  顯示版本信息。
  • top

      功能說明:顯示,管理執行中的程序。

      語  法:top [bciqsS][d <間隔秒數>][n <執行次數>]

      補充說明:執行top指令可顯示目前正在系統中執行的程序,並通過它所提供的互動式界面,用熱鍵加以管理。

      參  數:

      b  使用批處理模式。

      c  列出程序時,顯示每個程序的完整指令,包括指令名稱,路徑和參數等相關信息。

      d<間隔秒數>  設置top監控程序執行狀況的間隔時間,單位以秒計算。

      i  執行top指令時,忽略閒置或是已成爲Zombie的程序。

      n<執行次數>  設置監控信息的更新次數。

      q  持續監控程序執行的狀況。

      s  使用保密模式,消除互動模式下的潛在危機。

      S  使用累計模式,其效果類似ps指令的”-S”參數。

  • tload

      功能說明:顯示系統負載狀況。

      語  法:tload [-V][-d <間隔秒數>][-s <刻度大小>][終端機編號]

      補充說明:tload指令使用ASCII字符簡單地以文字模式顯示系統負載狀態。假設不給予終端機編號,則會在執行tload指令的終端機顯示負載情形。

      參  數:

      -d<間隔秒數>  設置tload檢測系統負載的間隔時間,單位以秒計算。

      -s<刻度大小>  設置圖表的垂直刻度大小,單位以列計算。

      -V  顯示版本信息。

/proc/loadavg 各項數據的含義

/proc文件系統是一個虛擬的文件系統,不佔用磁盤空間,它反映了當前操作系統在內存中的運行情況,查看/proc下的文件可以瞭解到系統的運行狀態。查看系統平均負載使用“cat /proc/loadavg”命令,輸出結果如下:

  0.27 0.36 0.37 4/83 4828

  前三個數字大家都知道,是1、5、15分鐘內的平均進程數(有人認爲是系統負荷的百分比,其實不然,有些時候可以看到200甚至更多)。後面兩個呢,一個的分子是正在運行的進程數,分母是進程總數;另一個是最近運行的進程ID號。


CPU利用率與Load Average的區別?

CPU利用率,是對一個時間段內CPU使用狀況的統計,通過這個指標可以看出在某一個時間段內CPU被佔用的情況,如果CPU被佔用時間很高,那麼就需要考慮CPU是否已經處於超負荷運作,長期超負荷運作對於機器本身來說是一種損害,因此必須將CPU的利用率控制在一定的比例下,以保證機器的正常運作。
Load Average是 CPU的Load,它所包含的信息不是CPU的使用率狀況,而是在一段時間內CPU正在處理以及等待CPU處理的進程數之和的統計信息,也就是CPU使用隊列的長度的統計信息。


那麼CPU利用率與Load Average對於性能測試的意義有什麼區別呢?

實際上,CPU利用率反映的是CPU被使用的情況,當CPU長期處於被使用而沒有得到足夠的時間休息間歇,那麼對於CPU硬件來說是一種超負荷的運作,需要調整使用頻度。而Load Average卻從另一個角度來展現對於CPU使用狀態的描述,Load Average越高說明對於CPU資源的競爭越激烈,CPU資源比較短缺。對於資源的申請和維護其實也是需要很大的成本,所以在這種高Average Load的情況下CPU資源的長期“熱競爭”也是對於硬件的一種損害。


如何評估性能需求中合理的Load Average?

一般來說,Load Average是與機器內核數有關的。以一個單核的機器爲例,load=0.5表示CPU還有一半的資源可以處理其他的線程請求,load=1表示CPU所有的資源都在處理請求,沒有剩餘的資源可以利用了,而load=2則表示CPU已經超負荷運作,另外還有一倍的線程正在等待處理。所以,對於單核機器來說,理想狀態下,Load Average要小於1。同理,對於雙核處理器來說,Load Average要小於2。結論是:多核處理器中,你的Load Average不應該高於處理器核心的總數量。


不同核處理器之間的load值怎樣換算?

性能測試中可能遇到這樣的問題,你的線上機器是8核的,但是線下性能測試機只有4核的與16核的,那麼我用16核機器測試得到的load值是2.6,換算到8核機器上應該是多少呢?
很不幸,沒有一個準確的公式可以用來換算。但是我們可以根據load的含義來做一個推斷,假如我們在一個雙核的機器上測試100個線程併發訪問X頁面時load爲2,那麼同樣的併發線程數請求同樣的頁面,在一臺單核的機器上測試,load會是多少呢?在雙核機器上,100線程同時請求時load爲2,說明2個核都在滿負荷運作,且平均每一個核在同時處理50個線程;如果在單核機器上100個線程同時請求,並且假設每一個核還是能同時處理50個線程,那麼就會有50個線程在等待,這樣看起來CPU的load還是2,但事實上,100個線程同時請求CPU時,已經超出了一個CPU可以同時處理的線程的能力,必然會出現線程之間競爭CPU資源的情況,而線程對CPU的“熱競爭”會使CPU耗費更多的資源去做線程調度的事情,所以總體效果來看,單核時load值實際會高於2。
上面是我自己的推論,網上還沒有找到相應的資料驗證。假如這種推論是對的,那麼16核機器上測試得到的load爲2.6,在8核機器上測試的話load值肯定高於2.6。究竟高多少應該跟CPU本身的性能也是有關的,具體我還不清楚該如何評估。


cpu 和 load 組合

CPU使用率和Load Average的關係:

     拿去醫院體檢做一個例子:

     用戶:待檢查的同學

     CPU:檢查的科室(B超、眼科。。。。)

1、 Load 高,CPU使用率低 :

眼科一共有3個醫生,檢查有次序,必須前一個醫生檢查結束了才能到下一個醫生處理
由於第一個醫生的檢查耗時比較長,導致後面很多同學排隊,但是接下去2個醫生都處於空閒狀態。
Load:等待的同學,由於等待的同學較多,所以Load的值較高
CPU使用率:只有一個醫生處於工作狀態,所以CPU的使用率爲33.33%

2、 Load低,CPU使用率高:

假設B超科室有和眼科同樣多的醫生,但是每個醫生之間的工作是獨立的。
來一個新同學的時間,大約是檢查完一個同學的時間。
Load:等待的同學,基本<=1
CPU使用率:每個醫生都處於忙碌狀態,CPU使用率接近100%
個人覺得這個例子舉的比較好理解,CPU就像科室(含多個醫生),如果裏面只有1個醫生看病,另外2個閒着,CPU利用率是33.3%,然後外面很多排隊等待使用CPU的人,這些就是排隊的進程了,他們都是競爭想要使用CPU,排隊等待的人多,就是說明CPU的競爭比較激烈,就是系統平均負載Load Average。所以,cpu被佔用了,利用率可能不高的,但是排隊等待使用的進程很多,Load卻高。所以,測試的時候,不能只看CPU利用率,也要看系統平均負載Load Average。


引用:
http://itlab.idcquan.com/linux/attestation/816287.html
http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html
http://blog.csdn.net/wutongyu344/article/details/38089603

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