負載在Linux上經常被誤解.
在Linux上,它是運行或不間斷睡眠狀態中所有任務的度量.
請注意,這是任務,而不是進程.線程包含在此值中.
內核每五秒計算一次加載,并且是一個加權平均值.這是微小負載是平均5/60,五分鐘5/300和十五分之五.
一般來說,作為一個純數字的負載在沒有參考點的情況下幾乎沒有價值,我認為這個值經常被誤傳.
誤解1:作為比率加載
In other words,how can I know what maximum load average a machine can support before performance starts to degrade?
這是人們在Linux中加載最常見的謊言.它可用于測量某些固定比率的cpu性能.這不是負載給你的東西.
詳細說明 – 人們很容易理解cpu利用率.隨著時間的推移,這是實用你完成工作,然后通過工作分工.
在這方面可能的工作是固定的已知值,通常表示為100的百分比 – 即固定比率.
然而,負載沒有約束.沒有固定的最大值,這就是為什么你難以理解要測量什么.
澄清采樣的負載確實具有不固定的最大值,這是采樣時系統中當前存在的任務總數(這與正在進行的cpu工作沒有實際關系).
如果計算加權,則計算出的負載沒有固定的最大值,因為它被投入加權平均值并且沒有給出任務數量的記錄.
因為我喜歡食物,你可以給出的類比是,利用率是你吃盤子的速度和平均負荷 – 平均而言 – 你剩下多少盤子.
因此,cpu效用和負載之間的差異是微妙但重要的. cpu實用程序是衡量工作的標準,負載是衡量需要完成的工作的標準.
誤解2:負載是即時測量
第二個謬論是Load是一個粒度測量.您可以讀取數字并了解系統狀態.
負載不是粒度的,而是表示系統的一般長期條件.它不僅每五秒采樣一次(因此錯過了在5秒窗口內發生的任務),而是分別以1,5和15分鐘的平均值進行測量.
您無法將其用作容量的即時衡量標準,而是在較長時間內對系統負擔的一般意義.
負載可以是100,然后僅在30秒后為10.它是你必須繼續觀看的價值.
Load可以告訴你什么?
它可以讓您了解系統的工作趨勢.它被給予的能力超過它能應付的程度還是更低?
>如果負載小于您擁有的cpu數(通常),則表示您的cpu容量大于工作量.
>如果負載大于或等于cpu的數量并且趨勢向上,則表明系統的工作量超出其處理能力.
>如果負載大于或等于cpu的數量并且向下趨勢,則表明系統正在完成工作的速度比您給它要做的事情要快.
由于不間斷的睡眠狀態,這確實使負載值混淆為純粹的工作安排得分 – 但是可以指示磁盤上有多少需求(它仍需要在技術上完成工作).
負載還提供系統異常的線索.如果你看到負荷在50,那表明有些不對勁.
另外加載會導致人們無緣無故地關注.
>眾所周知,磁盤活動可以增加負載.
>如果許多進程綁定到正在等待的一個cpu,則可以人為地加載負載.
>具有極低優先級(niceness)的任務通常需要等待很長時間才能為該特定進程將負載膨脹1.
綜上所述
我發現負載是一個非常粗糙的值,恰恰是沒有絕對的.您在一個系統上進行的測量通常對另一個系統沒有意義.
它可能是我在頂部看到的第一件事,純粹是為了檢查明顯的異常現象.基本上我使用它幾乎像一個溫度計 – 就像一個系統的一般條件.
我發現它的采樣周期太長,以至于我扔在我的系統上的大多數工作負載(通常以秒為單位運行,而不是幾分鐘).我認為執行長時間運行密集型任務的系統是有意義的,但我并沒有真正做到這一點.
我用它的另一件事是長期容量管理.在很長一段時間(幾個月)內繪制圖表是一件好事,因為您可以使用它來了解與幾個月前相比您處理的工作量.
最后,回答您關于在您的方案中應該做什么的問題.
老實說,我提供的最佳建議是考慮使用load作為何時運行 – 使用nice來執行你的進程,讓其他進程優先于它.出于某些原因,這很好.
>當其他進程忙時,您只需為此進程提供少量cpu時間.
>如果cpu上沒有任何內容或cpu處于空閑狀態,則您的任務將100%花費在其上.
>進程組中的所有進程都繼承了相同的優點.
好于0(默認值),每個進程的權重為1024.權重越低,cpu提供給進程的時間就越少.這是一個表格.
Nice Weight
0 1024
1 820
2 655
3 526
4 423
5 335
6 272
7 215
8 172
9 137
10 110
11 87
12 70
13 56
14 45
15 36
16 29
17 23
18 18
19 15
因此,要比較,在您有2個進程等待運行的情況下 – 如果您重新設置進程10,它將獲得優先級0進程所占cpu時間的大約1/10.如果你將它重新計算19,它將獲得優先級0進程所占cpu時間的1/100.
應該注意的是,至少在管道持續時間內,您可能會看到負載為1.
我想這對你的問題來說會更優雅.