xiaobaoqiu Blog

Think More, Code Less

Vmstat工具

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。

1.常用参数

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数

参数1表示每隔1秒打印一条信息

1
2
3
4
5
6
7
8
9
10
xiaobaoqiu@xiaobaoqiu:~/hotel/CRM/fs$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 2  0 299304 236692   8592 1589160    1    4   109   168  193   38 34 23 42  1
 0  0 299304 236892   8592 1589028    0    0     4     0 8159 10012 17 15 69  0
 0  0 299304 236324   8600 1589076    0    0     0   100 7979 8996  8 14 77  1
 0  0 299304 236412   8600 1589124    0    0     0     0 8269 10878 17 14 69  0
 2  0 299304 236656   8600 1589124    0    0     0     0 7900 9927 16 14 70  0
 0  0 299304 236744   8600 1589084    0    0     0    36 8152 9840 15 16 69  0
 0  0 299304 236480   8600 1589120    0    0     4     0 7903 10060 15 16 69  0

2.结果意义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Procs
r: 等待CPU的线程数目
b: 等待IO而被Blocked的线程数目

Memory
swpd: 虚拟内存的使用(Swap空间的使用),如果大于0,表示你的机器物理内存不足了
free: 空闲内存
buff: 用作buffer的空间
cache: 用作cache的空间

Swap
si: 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉
so: 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上

IO
bi: 块设备每秒接收的块数量,这里的块设备是指系统上的磁盘等块设备
bo: 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0

System
in: 每秒CPU的中断次数,包括时钟中断
cs: 每秒上下文切换次数,这个值要越小越好,太大了,要考虑调低线程或者进程的数目

CPU
These are percentages of total CPU time.
us: 用户CPU时间
sy: 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁
id: 空闲CPU时间
wa: 等待IO的CPU时间

3.参考

http://www.thomas-krenn.com/en/wiki/Linux_Performance_Measurements_using_vmstat