一、简介:
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,大部分的Linux的发行版都默认安装此命令的工具(如果没有安装的话:yum -y install procps ),利用vmstat可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。
二、命令用法与参数说明
命令的语法格式
vmstat [-V] [-n] [delay [count]]
各个选项及参数的含义:
-V 打印出版本信息
-n 表示在周期性的循环输出时,输出的头部信息仅显示一次
-a 显示活跃和非活跃内存
-d 显示磁盘相关统计信息
-D 以表格形式显示磁盘信息
-p 显示指定磁盘分区统计信息
-s 显示内存相关统计信息及多种系统活动数量
-m 显示slabinfo
-t 给输出添加时间戳
-S 使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
delay 刷新时间间隔。如果不指定,只显示一条结果
count 刷新次数,如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷大。
三、输出的字段解释:
shell> vmstat 2 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 0 506808 19024 31028 0 0 8 102 85 175 0 0 97 2 0 0 0 0 506792 19056 31020 0 0 0 190 62 147 0 1 98 1 0 0 0 0 506792 19088 31020 0 0 0 96 53 118 0 0 94 6 0 0 0 0 506792 19112 31004 0 0 0 102 46 108 0 0 75 25 0 0 0 0 506800 19112 31028 0 0 0 0 33 80 0 1 100 0 0
- procsr 表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPUb 表示在等待资源的进程数,比如正在等待I/O、或者内存交换等
- memory
swpd 表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。
free 表示当前空闲的物理内存数量(以k为单位)
buff 表示buffers cache的内存数量,一般对块设备的读写才需要缓冲
cache 表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好 - swap
si 表示由磁盘调入内存,也就是内存进入内存交换区的数量
so 表示由内存调入磁盘,也就是内存交换区进入内存的数量
一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存 - io 显示磁盘读写状况
bi 表示从块设备读入数据的总量(即读磁盘)(kb/s)
bo 表示写入到块设备的数据总量(即写磁盘)(kb/s)
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大,则表示系统磁盘IO有问题,应该考虑提高磁盘的读写性能 - system 显示采集间隔内发生的中断数
in 表示在某一时间间隔中观测到的每秒设备中断数
cs 表示每秒产生的上下文切换次数
上面这2个值越大,由内核消耗的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值越高,说明IO等待越严重,根据经验,wa的参考值为20%,如果wa超过20%,说明IO等待严重,引起IO等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)
综上所述,在对CPU的评估中,需要重点注意procs项中r列的值和CPU项中的us 、sy 和 id 列的值。
暂无评论