可以对操作系统的内存信息、进程信息、CPU活动等进行监视,不过无法对某个进程进行深入分析。
语法:vmstat [-V] [-n] [delay [count]]
各选项及参数含义如下:
-V,表示打印出版本信息,可选参数。
-n,表示在周期性循环输出时,输出的头部信息仅显示一次。
delay,表示两次输出之间的间隔时间。
count,表示按照“delay”指定的时间间隔统计的次数,默认为1.
例如:
vmstat 3 5
表示每3秒更新一次输出信息,统计5次后停止输出。
下面是系统的输出结果:
以上每项输出的解释如下:
>procs
r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统cpu的个数,说明cpu不足,要增加cpu。
b列表示在等待资源的进程数,比如正在等待I/O或者内存交换等。
>memory
swpd列表示切换到内存交换区的内存大小(已KB为单位)。如果swpd不为0,或者比较大,只要si、so的值长期为0,这种情况一般不用担心,不影响系统性能。
free列表示当前空闲的物理内存数量(已KB为单位)。
buff列表示buffers cached的内存数量,一般对块设备的读写才需要缓冲。
cache列表示page cached的内存数量,一般作为文件系统进行缓存,频繁访问的文件都会被缓存。如果cache值较大,说明缓存的文件较多,如果此时io中的bi比较小,说明文件系统效率比较好。
>swap
si列表示由磁盘调入内存,也就是由内存进入内存交换区的内存大小。
so列表示有内存调入磁盘,也就是内存交换区进入内存的内存大小。
一般情况下,si,so的值都为0,如果它们长期不为0,则表示系统内存不足,需要增加系统内存。
>io项显示磁盘读写状况
bi列表示从块设备读入数据的总量(即读磁盘)(kb/s)
bo列表示写到块设备的数据总量(即写磁盘)(kb/s)
这里参考值si+so=1000,如果超过1000,而且wa值较大,表示磁盘I/O有问题,应该考虑提高磁盘的读写性能。
>system显示采集间间隔内发生中断数
in列表示在一定时间间隔内观测到每秒设备中断数。
cs列表示每秒产生的上下切换次数。
以上两个值越大,由内核消耗的CPU时间越多。
>cpu项显示CPU的使用情况,此列是重点关注。
us列显示用户进程消耗的CPU时间百分比。us值比较高时,说明用户进程消耗的CPU时间多,但是如果长期大于50%,就要考虑优化程序或算法。
sy列显示内核进程消耗的CPU时间百分比。sy的值比较高时,说明内核消耗的CPU资源很多。
一般us+sy<80%,如果us+sy>80%,说明可能存在cpu资源不足。
id列显示cpu处在空闲状态的时间百分比。
wa列显示了IO等待所占用的CPU时间百分比。wa值越高,说明I/O等到越严重。一般wa值不超过20%,超过表示I/O等待严重。引起I/O等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈(主要是块操作)造成的。
综上所述,在对CPU的评估中,需要重点注意procs项中的r列的值和cpu项中的us、sy和id列的值。