vmstat是一個提供報告虛擬內存統計的工具,包括了系統內存、交換和實時處理器利用率。
命令詳解
【命令星級】 ★★★★☆
【功能說明】
vmstat是Virtual Memory
Statistics(虛擬內存統計)的縮寫,利用vmstat命令可以對操作系統的內存信息、進程狀態和CPU活動等進行監視。但是只能對系統的整體情況進行統計,無法對某個進程進行深入分析。
【語法格式】
vmstat [option] [delay [ count]]
vmstat [選項] [時間間隔[次數]]
說明:
1)在vmstat命令及後面的選項里,每個元素之間都至少有一個空格。
2)delay表示兩次輸出之間的間隔時間。
3)count表示按照delay指定的時間間隔統計的次數。
【選項說明】
表11-4針對該命令的參數選項進行了說明。
使用範例
範例11-12:顯示虛擬內存使用情況。
[root@oldboy ~]# vmstat #<==如果省略「間隔時間」和「次數」參數,則僅顯示一次報告後就退出
procs -----------memory---------- ---swap-- -----io---- --system--
-----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 71756 38600 279084 0 0 24 6 15 18 0 0 100 0 0
[root@oldboye ~]# vmstat 5 #<==表示每5秒鍾更新一次輸出信息,循環輸出,按Ctrl+C組合鍵停止輸出。
procs -----------memory---------- ---swap-- -----io---- --system--
-----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 71804 38600 279084 0 0 2 1 9 9 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 8 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 9 0 0 100 0 0
^C
[root@oldboye ~]# vmstat 5 6 #<==表示每5秒更新一次輸出信息,統計6次後停止輸出。
procs -----------memory---------- ---swap-- -----io---- --system--
-----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 71804 38600 279084 0 0 2 1 9 9 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 8 9 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
[root@oldboy ~]#
以下是命令結果說明。
第1列:procs。
q r列表示運行和等待CPU時間片的進程數。
q b列表示在等待資源的進程數。
第2列:memory。
q swpd列表示使用虛擬內存大小。
q free列表示當前空閑的物理內存數量。
q buff列表示buffers 的內存數量。
q cache列表示cache的內存數量。
第3列:swap。
q si(swap in)列表示由磁碟調入內存,也就是內存進入內存交換區的數量。
q so(swap out)列表示由內存調入磁碟,也就是內存交換區進入內存的數量。
第4列:I/O項顯示磁碟讀寫狀況。
q bi列表示從塊設備讀入數據的總量(即讀磁碟)(塊/s)。
q bo列表示寫入到塊設備的數據總量(即寫磁碟)(塊/s)。
第5列:system顯示採集間隔內發生的中斷數。
q in列表示在某一時間間隔中觀測到的每秒設備中斷數。
q cs列表示每秒產生的上下文切換次數。
第6列:CPU項顯示了CPU的使用狀態。
q us列顯示了用戶進程消耗的CPU時間百分比。
q sy列顯示了系統(內核)進程消耗的CPU時間百分比。
q id列顯示了CPU處在空閑狀態的時間百分比。
q wa列顯示了IO等待所佔用的CPU時間百分比。
q st列顯示了虛擬機佔用的CPU時間的百分比。
範例11-13:顯示活躍和非活躍內存。
[root@oldboy ~]# vmstat -a 2 5
procs -----------memory---------- ---swap-- -----io---- --system--
-----cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 0 71804 160408 165848 0 0 2 1 9 9 0 0 100 0 0
0 0 0 71756 160408 165844 0 0 0 0 11 11 0 0 100 0 0
0 0 0 71756 160408 165844 0 0 0 0 12 9 0 0 100 0 0
0 0 0 71608 160412 165672 0 0 0 1302 218 341 12 9 80 0 0
0 0 0 71608 160412 165672 0 0 0 0 10 9 0 0 100 0 0
使用-a選項顯示活躍和非活躍內存時,所顯示的內容除增加了inact和active外,其他顯示內容與範例11-12相同。
在Memory列增加的inact和active兩列,說明如下。
q inact: 非活躍內存大小(當使用-a選項時顯示)。
q active: 活躍的內存大小(當使用-a選項時顯示)。
範例11-14:查看內存使用的詳細信息。
[root@oldboy ~]# vmstat -s
486640 total memory
414572 used memory
165656 active memory
160420 inactive memory
72068 free memory
……
這些信息的分別來自於/proc/meminfo,/proc/stat和/proc/vmstat。
範例11-15:查看磁碟的讀/寫。
[root@oldboy ~]# vmstat -d
disk- ------------reads------------ ------------writes-----------
-----IO------
total merged sectors ms total merged sectors ms cur sec
ram0 0 0 0 0 0 0 0 0 0 0
ram1 0 0 0 0 0 0 0 0 0 0
……
sr0 0 0 0 0 0 0 0 0 0 0
sda 14667 3623 594388 6737 12864 32806 365372 44250 0 30
這些信息主要來自於/proc/diskstats。其中的merged表示一次來自於合並的寫/讀請求,一般系統會把多個連接/鄰近的讀/寫請求合並到一起來操作。
範例11-16:查看/dev/sda1磁碟的讀寫統計信息。
[root@oldboy ~]# vmstat -p /dev/sda1
sda1 reads read sectors writes requested writes
502 4162 14 68
這些信息主要來自於/proc/diskstats。各列的說明如下。
q reads:來自於這個分區的讀的次數。
q read sectors:來自於這個分區的讀扇區的次數。
q writes:來自於這個分區的寫的次數。
q requested writes:來自於這個分區的寫請求次數。
摘自:跟老男孩學Linux運維:核心系統命令實戰 第11章 版權歸原作者所有