語法
vmstat 常見命令格式如下:
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]命令選項-a:顯示活躍和非活躍內存;-f:顯示從系統啟動至今的fork數量;-m:顯示slabinfo;-n:只在開始時顯示一次各字段名稱;-s:顯示內存相關統計信息及多種系統活動數量;delay:刷新時間間隔,如果不指定,只顯示一條結果;count:刷新次數,如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數為無窮;-d:顯示磁盤相關統計信息;-p:顯示指定磁盤分區統計信息;-S:使用指定單位顯示,參數有 k 、K 、m 、M,分別代表1000、1024、1000000、1048576字節(byte),默認單位為K;-V:顯示vmstat版本信息;
示例
一般vmstat工具的使用是通過兩個數字參數來完成的,第一個參數是采樣的時間間隔,單位是秒;第二個參數是采樣的次數。如下所示,表示每隔1秒采樣,共采樣5次:
[fenglepeng@centos]# vmstat 1 5 # 采樣 5 次,每次間隔 1s
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r b swpd free buff cache si so bi bo in cs us sy id wa st5 0 0 95380 147816 1216484 0 0 0 24 1 0 1 1 98 0 00 0 0 95380 147816 1216484 0 0 0 0 410 907 0 1 99 0 00 0 0 95396 147816 1216484 0 0 0 0 388 836 0 1 99 0 00 0 0 95396 147816 1216484 0 0 0 0 391 853 1 0 99 0 02 0 0 94144 147816 1216484 0 0 0 12 409 903 1 1 98 0 0
vmstat命令執行結果共分為6部分:procs、memory、swap、io、system、cpu。具體含義如下:
procs ? #進程
- r(run):表示運行或等待CPU時間片的進程數,如果該值長期大于服務器CPU的個數,則說明CPU資源不足。一般負載超過了3就比較高,超過了5就高,超過了10就不正常了,服務器的狀態很危險;
- b(block):表示等待資源的進程數,這個資源指的是I/O、內存等。比如,當磁盤讀寫非常頻繁時,寫數據就會變得很慢,此時CPU運算很快就結束了,但進程需要把計算的結果寫入磁盤,這樣進程的任務才算完成,此時這個進程只能慢慢地等待磁盤了,這個進程就是這個b狀態。該數值如果長時間大于1,則需要去查找問題;
memory ?#內存,單位:KB
- swap:虛擬內存(swap空間)已使用的大小;
- free:空閑的物理內存的大小;
- buff:存放目錄里面有什么內容,文件的屬性以及權限等;
- cache:用來記憶我們打開過的文件和程序,做文件緩沖(當程序使用內存時,buff/cache很快就會被使用);
swap ? ?#swap空間,單位:KB,內存夠用時,si和so值都為0,如果這兩個值長期大于0,表示內存不夠用了,系統性能會受到影響
- si:表示從swap空間寫入內存的數據量;
- so:表示從內存寫入swap空間的數據庫;
io ? ? ?#單位:塊/秒
- bi:每秒讀取的塊數(讀磁盤),現在的Linux版本塊的大小為1024bytes;
- bo:每秒寫入的塊數(寫磁盤);
system ?#系統,這2個值越大,會看到由內核消耗的CPU時間會越大
- in:每秒CPU的中斷次數,包括時間中斷;
- cs:每秒上下文切換數,例如我們調用系統函數,就要進行上下文切換,線程的切換,也要進行上下文切換,這個值越小越好;
cpu ? ? #以百分比顯示
- us(user time):用戶進程執行時間;
- sy(system time):系統進程執行時間;
- id:空閑時間(包括IO等待時間);
- wa:等待IO時間,wa的值高時,說明IO等待比較嚴重,這可能由于磁盤大量做隨機訪問造成的,也有可能是磁盤出現瓶頸;
- st:表示被偷走的CPU所占百分比(一般都為0,不用關注);
- 備注:us + sy + id + wa =100% ? ? #這個是只是近似值