vmstat
是一个在类 Unix 操作系统(包括 Linux 和 BSD 系统)中广泛使用的系统监视工具,它的全称是 Virtual Memory Statistics(虚拟内存统计)。这个命令主要用于报告和分析系统的虚拟内存、物理内存、CPU、块 I/O 设备以及系统中断等核心资源的使用状况。
基本用法和选项:
- vmstat [interval [count]]
- 不加参数时,vmstat 显示系统启动以来的累计统计信息。
interval
表示两次报告之间的时间间隔(单位通常是秒),如果指定了这个参数,vmstat 将会每隔指定的时间间隔输出一次系统状态。count
表示要输出多少次报告后停止,默认情况下不指定将一直输出直到手动停止。
主要输出字段含义:
Procs(进程)
- r: 运行队列中的进程数,即正在等待 CPU 时间片的进程数量。
- b: 处于不可中断睡眠状态的进程数(通常是在等待 I/O 完成)。
Memory(内存)
- swpd: 虚拟内存中被换出到交换空间的总量。
- free: 可供立即使用的物理内存大小。
- buff: 作为缓冲区使用的内存大小。
- cache: 作为缓存使用的内存大小。
Swap
- si: 每秒从交换空间中换入到内存的大小。
- so: 每秒从内存换出到交换空间的大小。
IO(输入输出)
- bi: 每秒从块设备接收的块数。
- bo: 每秒发送到块设备的块数。
System(系统)
- in: 每秒产生的中断次数。
- cs: 每秒产生的上下文切换次数。
CPU(中央处理器)
- us: 用户进程消耗 CPU 时间的百分比。
- sy: 内核进程(系统)消耗 CPU 时间的百分比。
- id: 空闲 CPU 百分比。
- wa: 等待 I/O 完成所消耗的 CPU 时间百分比(高数值表明可能有严重的 I/O 瓶颈)。
- st: 虚拟机在等待 hypervisor 分配 CPU 时间片的百分比(仅在虚拟环境中有效)。
除此之外,vmstat
还提供了其他选项:
-s
或-vmstat -s
: 显示所有统计信息的总结,而不是连续更新。-a
: 显示活跃和非活跃内存的数量。-m
: 显示 slab 分配器的统计信息。-d
: 显示磁盘统计信息。-p [disk partition]
: 显示指定磁盘分区的统计信息。-n
: 忽略头部标题,对于脚本处理或连续输出更有利。
为了更深入地了解 vmstat
的功能和具体用例,查阅手册页 (man vmstat
) 或相关文档是很有帮助的。