檢查Unix系統的負載狀況
Unix
系統的uptime
命令可以用來檢查系統的負載狀況。以Linux
為例:
$ uptime 01:32:50 up 40 days,3:09, 56 users,load average: 11.72, 11.67, 11.51
load average
後面的3
個值分別是系統在過去1
,5
和15
分鐘負載的平均值(這裡的負載包含3
種程序:當前正在被CPU
執行的,一切條件就緒等待CPU
排程的,和等待磁碟讀取結果的)。衡量當前系統是否“過載”,需要把load average
同CPU
的數量結合起來考慮。如果load average
的值是1
,並且當前系統上只有一個CPU
(需要注意,這裡的CPU
指一個“邏輯CPU
”,即需要考慮物理CPU
有多個core
,每個core
支援hyper-thread
的情況),那麼系統在過去的時間就是“滿負荷”運轉的。但是如果系統上有4
個CPU
,那麼系統就只有1 / 4 = 25%
的時間是忙碌的,其餘75%
是空閒的。
Linux
系統的uptime
讀取/proc/loadavg
檔案:
$ cat /proc/loadavg 12.97 11.53 11.33 12/3958 7094
前三項對應uptime
中load average
的輸出。第四項中斜線前面的是活躍的kernel
程序(執行緒)數,後面則是系統所用的kernel
程序(執行緒)數。最後一項是系統最新產生的程序ID
。
對於OpenBSD
來說,由於其沒有/proc
檔案系統。它的uptime
實現則是通過sysctl
系統呼叫讀取vm.loadavg
的值。