vmstat信息解读

本文参考了ibm press的《Linux 服务器性能调整》,这本书全面介绍了性能调整的方方面面,但是把很多无用的显示信息放到正文中,这样很不爽

vmstat是在xnix我们常用的性能监控工具。常用的命令有vmstat 5 5,这个表示每5秒统计一次,共统计5次。

[root@ns ~]# vmstat 5 5
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 1968768  83276 206644 965036    0    0    96   296    1    0 25  0 73  2  0
0  0 1968768  83276 206644 965036    0    0     0    10 1021  760  0  0 100  0  0
0  0 1968768  83284 206644 965036    0    0     0     3 1030  725  2  1 98  0  0
0  0 1968768  83276 206644 965036    0    0     0    22 1048  790  0  0 100  0  0
1  0 1968768  82268 206644 965048    0    0     0   190 1054  842  0  0 99  0  0

前面一个5表示间隔多少秒,后面一个5表示统计几次。

第一列是procs,这个提供了生成报告时正在运行的进程数目(r)以及被阻塞的进程数目(b)。这2个值通常是越低越好,越低说明cpu空闲度高。
第二列是memory,这个提供了换出内存(swpd),空闲内存(free), I/O数据结构的缓冲区的缓存大小(buff),以及从磁盘读取文件的内存缓存(cache)的大小,单位都是KB。swpd的取值反映了kswapd的活动情况。
第三列是swap部分,这里提供了从磁盘上换入的内存容量(si)以及换出到磁盘上内存量(so),单位为KB/s。so反映了当数据被换出到交换分区时kswapd的活动情况,而si则反映了当页面被换回到物理内存时发生页面错误的情况。这两个值在系统内存够大或者负载较轻的情况下应该都为0.
第四列是io部分,这个部分反映了从设备读入块数(bi)以及写出到设备上的块数(bo),单位为KB/s,当I/O操作特别频繁的时候要特别注意这2个值的变化。
第五列是system部分,显示了每秒钟的中断数目(in)和上下文切换数目(cs)。中断和上下文切换是每个程序都肯定存在的,所以必须要 有所前后文比对才能确定是否系统出了问题,程序有问题肯定会导致频繁的中断和上下文切换,这样非常消耗系统资源。
第六列是cpu部分,这里提供了用户(us),系统(sy),真正空闲(id)以及等待I/O完成(wa)在CPU总时间中所站的百分比,若wa值过大,则应该检查I/O子系统。
而在linux2.6.11后还会多出(st)列,这个表示虚拟线程占有cpu。现在还不知道这个值具体有什么作用,是不是只有在装了KVM或者XEN的情况下才有用呢?