CPU利用率和Load Average

CPU利用率和Load Average的區(qū)別

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

  2. Load Average:表示的是CPU的平均負載。我們知道進程有三種基本態(tài):掛起、就緒、進行(此外還有創(chuàng)建和結束)。操作系統(tǒng)會給“一個CPU分配一個對應的task隊列”。顯然:“數(shù)值為1表示剛剛好可以處理,如果大于1則表示task隊列里面已經有進程在堆積了。也就是負載過重,機器處理不過來了”。

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

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


image.png

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

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

每一個分配到電話的使用者使用電話時間的總和去除以統(tǒng)計的時間段。這里需要注意的是是使用電話的時間總和(sum(active use cpu time)),這與占用時間的總和(sum(occupy cpu time))是有區(qū)別的。(例如一個用戶得到了一分鐘的使用權,在10秒鐘內打了電話,然后去查詢號碼本花了20秒鐘,再用剩下的30秒打了另一個電話,那么占用了電話1分鐘,實際只是使用了40秒)

電話的Average Load:體現(xiàn)的是在某一統(tǒng)計時間段內,所有使用電話的人加上等待電話分配的人一個平均統(tǒng)計數(shù)。

電話利用率的統(tǒng)計:能夠反映的是電話被使用的情況,當電話長期處于被使用而沒有的到足夠的時間休息間歇,那么對于電話硬件來說是一種超負荷的運作,需要調整使用頻度。

顯然,電話Average Load從另一個角度來展現(xiàn)對于電話使用狀態(tài)的描述,Average Load越高說明對于電話資源的競爭越激烈,電話資源比較短缺。對于資源的申請和維護其實也是需要很大的成本,所以在這種高Average Load的情況下電話資源的長期“熱競爭”也是對于硬件的一種損害。

低利用率的情況下是否會有高Load Average的情況產生呢?
理解占有時間和使用時間就可以知道,當分配時間片以后,是否使用完全取決于使用者,因此完全可能出現(xiàn)低利用率高Load Average的情況。由此來看,僅僅從CPU的使用率來判斷CPU是否處于一種超負荷的工作狀態(tài)還是不夠的,必須結合Load Average來全局的看CPU的使用情況和申請情況。

最后請關注,load average 應與cpu總核數(shù)做比較,如邏輯核數(shù)有40個,那么load average=40表明正好能處理過來,以此類推

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容