vmstat是一個查看虛擬內存使用情況的工具,它能夠看到服務器使用率,內存使用,虛擬內存交換狀況,IO讀寫.相比top,能夠看到整個機器的CPU,memory,IO的使用狀況,而不是單單看到各個進程各值的使用率.web
默認狀況下,vmstat命令並無安裝,須要安裝sysstat包,該包裏含有vmstat程序.緩存
通常常用的該命令後加2個數字參數,第一個參數是採樣的時間間隔(秒),第二個參數是採樣的次數.服務器
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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
|
根據以上實例,下面是字段說明:函數
Procs(進程)工具
r:表示運行隊列的進程數量,換句話說就是多少個進程真正分配到cpu.服務器配置cpu爲8核,這裏因爲服務器運行了大量的程序在跑,當這個值超過了cpu數目,且id較小,就可能會出現cpu瓶頸.運行隊列過大,表示cpu很繁忙,通常會形成cpu使用率太高.spa
b:等待io的進程數..net
Memory線程
swpd:虛擬內存使用狀況,單位KBcode
free:空閒的內存orm
buff:用做緩衝的內存大小,內存中的一部分,某程序代碼緩存,不可移到swap裏去.
cache:用做緩存的內存大小,數據緩存,容許交給swap
Swap
si:從磁盤交換到內存的交換頁數量,每秒從磁盤讀入虛擬內存的大小,若是這個值大於0,表示物理內存不夠用或者內存泄露.
so:從內存交換到磁盤的交換頁數量,每秒虛擬內存寫入磁盤的大小,若是這個值大於0,表示物理內存不夠用或者內存泄露.
bi:Blocks received from a block device (blocks/s).每秒從塊設備接收到的塊數,即讀塊設備。
bo:Blocks sent to a block device (blocks/s).每秒發送到塊設備的塊數,即寫塊設備。
System
in:每秒中斷數,包括時鐘中斷.
cs:每秒上下文切換數.這個值越小越好.好比每次調用系統函數,線程的切換,代碼就會進入內核空間,致使上下文切換,次數過多表示cpu大部分浪費在上下文切換,致使cpu沒有充分利用.
CPU(以百分比表示)
us:用戶進程執行的時間,用戶cpu使用率,操做運算等.
sy:系統進程執行的時間,系統cpu使用率,讀取硬盤,操做硬件等.
id:空閒時間(包括IO等待時間)
wa:等待IO時間