在 Linux 或是大多數的 UNIX-like 的系統上,系統核心 (kernel) 會提供一組稱為 load average 的值,用來反應系統負載狀態。
這組值原則上是基於工作佇列中的工作數量與工作特性權重去計算出來,可以說是在等待資源中的工作數量,系統會提供 1, 5, 15 分鐘的平均值。
以 Linux 來說,納入考量的資源包含了處理器、被分頁置換的記憶體、儲存設備、網路介面等等,因此在 Linux 上 load average 可以說是一個綜合性的指標,可以相當程度的反映出程式分享設備資源的狀況。
舉例來說,如果這個值是 2.00 的話,可以想像成有兩個工作正在等待資源,換句話說,這些等待中的工作所需要的資源目前是完全使用中的。
系統中多半會有許多程式在運行,他們會因為程式本身設計的目的使用不同的資源,因此 load average 也一定程度可以反映出工作組合在特定主機設備上的狀況。
比如說,如果主機上的工作是類似資料庫或是需要大量存取檔案的應用程式,由於儲存設備相對處理器與記憶體多半是相對慢的,工作勢必是需要做一些等待來得到資料,所以在偏高的 load average 下整體而言還是可以有不錯的處理能力 (throughput) 表現。
但如果是使用處理器為主的應用程式,那麼偏高的 load average 就意味著有工作在進行單純的等待,在這個情況下如果處理能力不符合需求的話,可以考慮是不是做一些硬體資源的調整來提升處理能力。
利用這樣的特性,我們也可以透過監視 load average 來偵測到系統的工作組合是不是發生了變化。比如要是遭到了勒索軟體的入侵,由於勒索軟體會進行大量的儲存裝置操作,那麼 load average 就會衝到比平常還高的數值上。
Ref: