linux中vmstat的使用
vmstat 全面的性能分析工具,可以觀察到系統的進程狀態、內存使用、虛擬內存使用、磁盤的IO、中斷、上下文切換、CPU使用等。
在系統中使用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,服務高峰期可以接受
【編輯推薦】