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