在linux/unix下,vmstat是常用的系统性能监测工具。常用用法如下
vmstat 1 10
表示以1秒为间隔,做相关参数的采样,一共10次。输出范例如下:
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 491080 32920 37104 794024 1 1 44 173 15 14 6 9 84 1 1 0 0 491080 32424 37104 794052 0 0 0 20 895 2388 6 9 84 0 0 1 0 491080 31680 37112 794056 0 0 0 488 328 761 4 12 83 0 0 1 0 491080 32300 37112 794032 0 0 0 64 1219 2507 4 5 92 0 1 3 0 491080 31600 37112 794048 0 0 0 148 258 419 2 2 97 0 0 0 0 491080 32416 37124 794060 0 0 0 508 1406 2648 4 6 90 0 0 1 0 491080 32168 37124 794088 0 0 0 48 257 396 2 3 95 0 1 0 0 491080 31568 37132 794060 0 0 0 284 1272 2636 5 9 86 0 0 1 0 491080 34896 37140 794052 0 0 0 372 387 564 3 6 89 0 1 0 0 491080 32064 37140 794056 0 0 0 68 1219 2561 4 7 90 0 0
其中第一行输出,是系统启动至今总的统计数值,对长时间运行的系统来说,此采样对系统短期的参考价值不大。
主要列解析:
procs 列
r: 当前在就绪队列中的进程,可以看做系统cpu资源利用饱和度的指标
swap列
si(swapped in): 每秒交换进内存的内存大小
so(swapped out):每秒交换出磁盘的内存大小
如果这两项比较高,说明有频繁的内存换进换出,可能是物理内存不足引起
io列
bi:每秒读入内存的数据量
bo:每秒写出到磁盘的数据量
如果这两项数值较高,说明磁盘IO的负载比较重
System列
cs: 每秒上下文切换的次数
如果此数值较高,说明系统中上下文切换过于频繁,会导致系统性能下降。需要进一步确定造成的原因
CPU列
us: 运行非内核代码消耗的时间
sy: 运行内核代码消耗的时间
id: 系统空闲的时间
wa: IO等待消耗的时间