vmstat是一個查看虛擬內(nèi)存使用狀況的工具,它可以看到服務(wù)器使用率,內(nèi)存使用,虛擬內(nèi)存交換情況,IO讀寫.相比top,可以看到整個機器的CPU,memory,IO的使用情況,而不是單單看到各個進程各值的使用率.
默認情況下,vmstat命令并沒有安裝,需要安裝sysstat包,該包里含有vmstat程序.
一般經(jīng)常使用的該命令后加2個數(shù)字參數(shù),第一個參數(shù)是采樣的時間間隔(秒),第二個參數(shù)是采樣的次數(shù).
基本參數(shù):
vmstat [-a] [-n] [-t] [-S unit] [delay [ count]]
[-a]:顯示活躍和非活躍內(nèi)存
[-n]:只在開始時顯示一次字段名,針對多次收集信息的情況輸出人性化一點
[-t]:在每條信息的末尾,顯示收集信息的時間
[-S unit]:使用指定單位顯示。參數(shù)有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576字節(jié)(byte)。默認單位為K(1024 bytes)
[delay [count]]:delay是信息收集間隔,count是信息收集的次數(shù)
vmstat [-s] [-n] [-S unit]
[-s]:顯示內(nèi)存相關(guān)的統(tǒng)計信息
vmstat [-m] [-n] [delay [ count]]
[-m]:顯示slabinfo,slabinfo信息記錄在/proc/slabinfo文件中。slab是linux的一個內(nèi)存分配機制。
vmstat [-d] [-n] [delay [ count]]
[-d]:顯示相關(guān)磁盤的統(tǒng)計信息
注:這個跟樓下-p的區(qū)別統(tǒng)計信息的不同、統(tǒng)計對象這個是磁盤-p是子分區(qū)、這個不能指定全部輸出
vmstat [-p disk partition] [-n] [delay [ count]]
[-p disk partition]:顯示磁盤子分區(qū)的統(tǒng)計信息,這里沒有iostat的信息那么有用
vmstat [-f]
[-f]:開機啟動至今的fork數(shù)量 注:這里的fork應(yīng)該是內(nèi)核的fork()函數(shù),在父進程中,fork返回新創(chuàng)建子進程的進程ID
vmstat [-V]
[-V]:版本信息
示例
root@192.168.22.54:~# vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
13 0 0 542604 323512 12356052 0 0 0 2 0 0 17 18 65 0 0
42 0 0 552500 323512 12356112 0 0 0 0 18669 49903 42 45 14 0 0
72 0 0 563416 323512 12356132 0 0 0 0 18394 49895 41 43 16 0 0
73 0 0 570924 323512 12356164 0 0 0 0 19666 51678 37 41 22 0 0
13 0 0 581208 323512 12356204 0 0 0 280 18990 49541 43 43 15 0 0
18 0 0 587148 323512 12356228 0 0 0 32 19360 49203 37 39 24 0 0
27 0 0 520016 323512 12356292 0 0 0 0 20423 52865 39 40 21 0 0
18 0 0 527512 323512 12356336 0 0 0 0 19613 53052 42 43 16 0 0
23 0 0 538608 323512 12356376 0 0 0 0 18860 50645 41 42 18 0 0
80 0 0 548608 323512 12356444 0 0 0 0 19781 50917 41 42 17 0 0
根據(jù)以上實例,下面是字段說明:
Procs(進程)
r:表示運行隊列的進程數(shù)量,換句話說就是多少個進程真正分配到cpu.服務(wù)器配置cpu為8核,這里由于服務(wù)器運行了大量的程序在跑,當這個值超過了cpu數(shù)目,且id較小,就可能會出現(xiàn)cpu瓶頸.運行隊列過大,表示cpu很繁忙,一般會造成cpu使用率過高.
b:等待io的進程數(shù).
Memory
swpd:虛擬內(nèi)存使用情況,單位KB
free:空閑的內(nèi)存
buff:用作緩沖的內(nèi)存大小,內(nèi)存中的一部分,某程序代碼緩存,不可移到swap里去.
cache:用作緩存的內(nèi)存大小,數(shù)據(jù)緩存,允許交給swap
Swap
si:從磁盤交換到內(nèi)存的交換頁數(shù)量,每秒從磁盤讀入虛擬內(nèi)存的大小,如果這個值大于0,表示物理內(nèi)存不夠用或者內(nèi)存泄露.
so:從內(nèi)存交換到磁盤的交換頁數(shù)量,每秒虛擬內(nèi)存寫入磁盤的大小,如果這個值大于0,表示物理內(nèi)存不夠用或者內(nèi)存泄露.
bi:Blocks received from a block device (blocks/s).每秒從塊設(shè)備接收到的塊數(shù),即讀塊設(shè)備。
bo:Blocks sent to a block device (blocks/s).每秒發(fā)送到塊設(shè)備的塊數(shù),即寫塊設(shè)備。
System
in:每秒中斷數(shù),包括時鐘中斷.
cs:每秒上下文切換數(shù).這個值越小越好.比如每次調(diào)用系統(tǒng)函數(shù),線程的切換,代碼就會進入內(nèi)核空間,導致上下文切換,次數(shù)過多表示cpu大部分浪費在上下文切換,導致cpu沒有充分利用.
CPU(以百分比表示)
us:用戶進程執(zhí)行的時間,用戶cpu使用率,操作運算等.
sy:系統(tǒng)進程執(zhí)行的時間,系統(tǒng)cpu使用率,讀取硬盤,操作硬件等.
id:空閑時間(包括IO等待時間)
wa:等待IO時間