在系統中使用root身份,執行vmstat 1 命令,觀察性能狀況。各參數值含義見下方:
vmstat
procs
r:
運行的和等待(CPU時間片)運行的進程數,這個值也可以判斷是否需要增加CPU(長期大於1)
b:
處於不可中斷狀態的進程數,常見的情況是由IO引起的
memory
swpd: 切換到交換內存上的內存(默認以KB爲單位)
如果 swpd 的值不爲0,或者還比較大,比如超過100M了,但是 si, so 的值長期爲 0,這種情況我們可以不用擔心,不會影響系統性能。
free: 空閒的物理內存
buff: 作爲buffer cache的內存,對塊設備的讀寫進行緩衝
cache: 作爲page cache的內存, 文件系統的cache
如果 cache 的值大的時候,說明cache住的文件數多,如果頻繁訪問到的文件都能被cache住,那麼磁盤的讀IO bi 會非常小。
Swap
si: 交換內存使用,由磁盤調入內存
so: 交換內存使用,由內存調入磁盤
內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響。磁盤IO和CPU資源都會被消耗。
常有人看到空閒內存(free)很少或接近於0時,就認爲內存不夠用了,實際上不能光看這一點的,還要結合si,so,如果free很少,但是si,so也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的。
io
bi: 從塊設備讀入的數據總量(讀磁盤) (KB/s),
bo: 寫入到塊設備的數據總理(寫磁盤) (KB/s)
隨機磁盤讀寫的時候,這2個 值越大(如超出1M),能看到CPU在IO等待的值也會越大
system
in: 每秒產生的中斷次數
cs: 每秒產生的上下文切換次數
上面這2個值越大,會看到由內核消耗的CPU時間會越多
cpu
us: 用戶進程消耗的CPU時間百分比
us 的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超過50% 的使用,那麼我們就該考慮優化程序算法或者進行加速了
sy: 內核進程消耗的CPU時間百分比
sy 的值高時,說明系統內核消耗的CPU資源多,這並不是良性的表現,我們應該檢查原因。
wa: IO等待消耗的CPU時間百分比
wa 的值高時,說明IO等待比較嚴重,這可能是由於磁盤大量作隨機訪問造成,也有可能是磁盤的帶寬出現瓶頸(塊操作)。
id: CPU處在空閒狀態時間百分比
這個 vmstat 的輸出那些信息值得關注?
procs r: 運行的進程比較多,系統很繁忙
io bo: 磁盤寫的數據量稍大,如果是大文件的寫,10M以內基本不用擔心,如果是小文件寫2M以內基本正常
cpu us: 持續大於50,服務高峯期可以接受
cpu wa: 稍微有些高
cpu id:持續小於50,服務高峯期可以接受