Process

了解頂部和平均負載

  • April 21, 2016

我在所有三個負載領域中觀察到某台機器(大約 9 個)的高負載平均值。我將負載理解為處於“執行”狀態/目前需要 CPU 時間的程序數。如果我的機器上正在執行 N 個程序,這不會產生大於 N 的負載,我的推理是否正確?

此外,負載是否與程序或執行緒有關?換句話說,多執行緒程序能否產生大於 1 的負載?

平均負載通常被描述為“執行隊列的平均長度”。因此,很少有 CPU 消耗的程序或執行緒可以將 LA 提高到 1 以上。如果 LA 小於 CPU 核心的總數,則沒有問題。但是如果它高於 CPU 的數量,這意味著一些執行緒/程序將留在隊列中,準備執行,但等待空閒的 CPU。

用於計算平均負載的數字是處於執行或不間斷狀態的任務以及在移動平均的時間片內完成的工作量。這些任務可以是多執行緒程序的一部分。由於所使用算法的平滑結果,這些欄位在時間上越早模糊。

負載 1 等於一個 CPU 的 100% 工作。如果你有一個多執行緒應用程序,它的活動執行緒數超過了可用 CPU 的數量,那麼你可以讓一個程序將負載驅動到 1 以上。這可能是一個短期峰值,不會反映在負載平均值的較長時間片視圖。

此外,由於平均負載是在多核系統出現之前開發的,因此將負載數除以可用核心總數很重要。如果這是 4 插槽四核系統上 9 的持續負載,那麼這是 16 中的 9 負載,並不是真正的問題。

引用自:https://unix.stackexchange.com/questions/9465