2019/08/18

Published 8月 18, 2019 by

vmstat命令 -性能監測與優化

vmstat命令 -性能監測與優化

vmstat命令的含義為顯示虛擬內存狀態("Virtual Memory Statistics"),但是它可以報告關於進程、內存、I/O等系統整體運行狀態。


範列說明:
(每秒顯示一次,共顯示10)
#vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu ------
 rb swpd    free    buff cache si so bi bo in cs us sy id wa st
 0 0 320 42188 167332 1534368 0 0 4 7 1 0 0 0 99 0 0
 0 0 320 42188 167332 1534392 0 0 0 0 1002 39 0 0 100 0 0
 0 0 320 42188 167336 1534392 0 0 0 19 1002 44 0 0 100 0 0
 0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0
 0 0 320 42188 167336 1534392 0 0 0 0 1002 41 0 0 100 0 0

Procs(進程)
·        r: 等著CPU執行的數量(尚未執行),這個值也可以判斷是否需要增加CPU
·        b: 目前處理程序阻塞並等待IO請求完成的數量。
Memory(內存)
·        swpd: 使用虛擬內存大小,如果swpd的值不為0,但是SISO的值長期為0,這種情況不會影響系統性能。
·        free: 空閒物理內存大小。
·        buff: 用作緩衝的內存大小。
·        cache: 用作緩存的內存大小,如果cache的值大的時候,說明cache處的文件數多,如果頻繁訪問到的文件都能被cache處,那麼磁盤的讀IO bi會非常小。
Swap
·        si: 每秒從交換區寫到內存的大小,由磁盤讀入到記憶體。
·        so: 每秒寫入交換區的內存大小,由記憶體寫入磁盤。
注意:內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁盤IOCPU資源都會被消耗。有些朋友看到空閒內存(free)很少的或接近於0時,就認為內存不夠用了,不能光看這一點,還要結合siso,如果free很少,但是siso也很少(大多時候是0),那麼不用擔心,系統性能這時不會受到影響的。
IO(現在的Linux版本塊的大小為1kb
·        bi: 每秒讀取的區塊(Block)
·        bo: 每秒寫入的區塊(Block)
注意:隨機磁盤讀寫的時候,這2個值越大(如超出1024k),能看到CPUIO等待的值也會越大。
system(系統)
·        in: 每秒中斷數,包括時鐘中斷。
·        cs: 每秒上下文切換數。
注意:上面2個值越大,會看到由內核消耗的CPU時間會越大。
CPU(以百分比表示)
·        us:用戶進程執行時間百分比(user time)
us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超50%的使用,那麼我們就該考慮優化程序算法或者進行加速。
·        sy: 內核系統進程執行時間百分比(system time)
sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因。
·        wa: IO等待時間百分比
wa的值高時,說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸。
·        id: 空閒時間百分比