vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:
每2s输出一次,共5次;
proc表示cpu繁忙程度,r为运行态,b为阻塞态,每个核心同时只能运行一个进程;
memory表示内存的情况:
- swpd表示交换分区,表示你的机器物理内存不足了,如果频繁改变,说明系统在用swap.
- free表示空闲的物理内存
- buff的控制相对简单,是对数据流缓冲,将需要的数据流临时缓冲在buff里,以降低低速设备对整体的影响。如IO消耗。
- cache是对高速交换进行缓冲,需要一些额外的算法来提高效率,比如读取命中之类的,一般相对较小,速度很快,大多是对指令的临时存储,字符流及共享内存等。
swap表示交换分区使用情况:
- si, 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉
- so, 每秒虚拟内存写入磁盘的大小
io表示块设备使用情况:
- bi, 磁盘块 读 情况
- bo, 磁盘块 写 情况
system表示系统cpu中断情况:
- in, 每秒CPU的中断次数,包括时间中断
- cs, 每秒上下文切换次数
cpu表示cpu使用情况:
- us,用户CPU时间
- sy, 系统CPU时间
- id, 空闲CPU时间
- wa, 表示await,指只有1个进程使用cpu时,超过时间片后还继续占用cpu的时间
- st,虚拟 CPU 等待实际 CPU 的时间的百分比