vmstat(Virtual Memory Statistics)是 sysstat 工具包中的系统监控工具,用于报告进程、内存、分页、块 I/O、陷阱(中断)和 CPU 活动的统计信息。该工具能够提供系统整体运行状况的快照,是性能分析的首选工具之一。
vmstat [选项] [间隔秒数] [采样次数]
| 参数 | 说明 |
|---|
-a | 显示活跃/非活跃内存 |
-f | 显示系统启动后的 fork 数量 |
-s | 显示内存统计汇总 |
-d | 显示磁盘统计 |
-D | 显示磁盘汇总统计 |
-t | 显示时间戳 |
-S 单位 | 指定输出单位(k/K/m/M) |
$ vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2016072 310208 5243680 0 0 0 1 10 15 2 1 97 0 0
0 0 0 2016070 310208 5243680 0 0 0 0 12 18 3 1 96 0 0
0 0 0 2016068 310208 5243680 0 0 0 0 11 16 2 1 97 0 0
| 字段 | 说明 |
|---|
r | 运行队列中的进程数(等待 CPU 的进程数) |
b | 不可中断睡眠的进程数(等待 I/O 的进程数) |
| 字段 | 说明 |
|---|
swpd | 虚拟内存使用量(KB) |
free | 空闲内存量(KB) |
buff | 缓冲区内存量(KB) |
cache | 缓存内存量(KB) |
| 字段 | 说明 |
|---|
si | 每秒从磁盘交换到内存的数据量(KB/s) |
so | 每秒从内存交换到磁盘的数据量(KB/s) |
| 字段 | 说明 |
|---|
bi | 每秒从块设备接收的块数(blocks/s) |
bo | 每秒发送到块设备的块数(blocks/s) |
| 字段 | 说明 |
|---|
in | 每秒中断数(包括时钟中断) |
cs | 每秒上下文切换次数 |
| 字段 | 说明 |
|---|
us | 用户态 CPU 时间占比 |
sy | 内核态 CPU 时间占比 |
id | 空闲 CPU 时间占比 |
wa | 等待 I/O 的 CPU 时间占比 |
st | 被虚拟机偷走的 CPU 时间占比 |
$ vmstat -s
8175320 K total memory
6159248 K used memory
5243680 K active memory
2016072 K free memory
310208 K buffer memory
| 指标 | 正常范围 | 存在瓶颈 |
|---|
r | < CPU 核心数 × 2 | > CPU 核心数 × 5 |
us | < 70% | > 90% |
wa | < 5% | > 20% |
si 和 so 持续大于 0 表示系统内存不足,正在频繁使用交换分区free 持续下降说明内存使用量在增加
b 值较高表示进程在等待 I/O 完成bi 和 bo 值较高表示磁盘 I/O 繁忙wa 值较高说明 CPU 在等待 I/O
man vmstat — 查看完整帮助文档iostat — I/O 子系统监控sar — 系统活动报告free — 内存使用查看