vmstat介绍
vmstat可以对操作系统的内存信息、进程状态、 CPU活动、磁盘等信息进行监控,不足之处是无法 对某个进程进行深入分析。
vmstat
vmstat [-a] [-n] [-S unit] [delay [ count]]
- -a:显示活跃和非活跃内存
- -m:显示slabinfo
- -n:只在开始时显示一次各字段名称。
- -s:显示内存相关统计信息及多种系统活动数量。
- delay:刷新时间间隔。如果不指定,只显示一条结果。
- count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这 时刷新次数为无穷。
- -d:显示各个磁盘相关统计信息。
- -S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、
1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
- -V:显示vmstat版本信息。
- -p:显示指定磁盘分区统计信息
- -D:显示磁盘总体信息
一般用法
- delay:刷新时间间隔。如果不指定,只显示一条结果。
- count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这 时刷新次数为无穷。
vmstat 10
10秒刷新一次结果,只要不停止,会持续显示刷新后的数据。
vmstat 10 5
10秒刷新一次结果,一共显示5次数据
字段说明
procs | |
R列 | R列表示运行和等待CPU时间片的进程数,这个值如果长期大于系统CPU个数, 说明CPU不足,需要增加CPU |
B列 | B列表示在等待资源的进程数,比如正在等待I/O或者内存交换等 |
memory | |
swpd列 | swpd列表示切换到内存交换区的内存大小(单位KB),通俗讲就是虚拟内存的 大小。如果swap值不为0或者比较大,只要si、so的值长期为0.这种情况一般属 于正常情况。 |
free列 | free列表示当前空闲的物理内存(单位KB) |
Buff列 | Buff列表示baffers cached内存大小,也就是缓冲大小,一般对块设备的读写 才需要缓冲。 |
Cache列 | Cache列表示page cached的内存大小,也就是缓存大小,一般作为文件系统进 行缓冲,频繁访问的文件都会被缓存,如果cache值非常大说明缓存文件比较多, 如果此时io中的bi比较小,说明文件系统效率比较好。 |
swap | |
Si列 | Si列表示由磁盘调入内存,也就是内存进入内存交换区的内存大小。 |
so列 | so列表示由内存进入磁盘,也就是有内存交换区进入内存的内存大小。 一般情况下,si、so的值都为0,如果si、so的值长期不为0,则说明系统内存不 足,需要增加系统内存。 |
io | |
bi列 | bi列表示由块设备读入数据的总量,即读磁盘,单位kb/s。 |
bo列 | bo列表示写到块设备数据的总量,即写磁盘,单位kb/s |
备注 | 如果bi+bo值过大,且wa值较大,则表示系统磁盘IO瓶颈。 |
system | |
in列 | in列表示某一时间间隔内观测到的每秒设备中断数 |
cs列 | cs列表示每秒产生的上下文切换次数。 |
备注 | 这2个值越大,则由内核消耗的CPU就越多 |
cpu | |
us列 | us列表示用户进程消耗的CPU时间百分比,us值越高,说明用户进程消耗cpu时 间越多,如果长期大于50%,则需要考虑优化程序或者算法。 |
sy列 | sy列表示系统内核进程消耗的CPU时间百分比,一般来说us+sy应该小于80%, 如果大于80%,说明可能出现CPU瓶颈。 |
id列 | id列表示CPU处在空闲状态的时间百分比 |
wa列 | wa列表示等待所占的CPU时间百分比,wa值越高,说明I/O等待越严重,根据经 验wa的参考值为20%,如果超过20%,说明I/O等待严重,引起I/O等待的原因可能 是磁盘大量随机读写造成的,也可能是磁盘或者此监控器的带宽瓶颈(主要是块 操作)造成的。 |
备注 | 如果评估CPU,需要重点关注procs项的r列值和CPU项的us、sy、wa列 的值。 |