vmstat
是一个常用的系统性能监控工具,它能够实时报告系统的内存、交换、进程、IO、系统活动等信息。通过 vmstat
命令,我们可以快速了解服务器的资源使用情况,从而进行性能调优或问题排查。
vmstat
的全称是 "virtual memory statistics"(虚拟内存统计)。它最初设计用于分析虚拟内存子系统的性能,但随着时间的推移,它的功能已经扩展到包括 CPU、内存、磁盘 IO 和其他系统资源的监控。
在 Linux 系统中,vmstat
是默认安装的工具之一,通常不需要额外安装即可使用。
vmstat
的基本语法如下:
vmstat [delay] [count]
delay
:指定刷新间隔时间(单位为秒)。count
:指定刷新次数。如果省略 count
参数,vmstat
将会无限次地按照指定的间隔时间刷新数据。
vmstat 1 5
执行后,vmstat
每隔 1 秒输出一次系统资源的使用情况,总共输出 5 次。
以下是 vmstat
命令输出的主要字段及其含义:
字段 | 描述 |
---|---|
procs r | 等待运行的进程数 |
procs b | 处于不可中断睡眠状态的进程数 |
memory swpd | 使用的交换空间大小(KB) |
memory free | 空闲内存大小(KB) |
memory buff | 用作缓冲的内存大小(KB) |
swap si | 从磁盘换入内存的数据量(KB/s) |
swap so | 从内存换出到磁盘的数据量(KB/s) |
io bi | 接收到的块设备 I/O 数量(KB/s) |
io bo | 发送的块设备 I/O 数量(KB/s) |
system in | 中断次数 |
system cs | 上下文切换次数 |
cpu us | 用户态 CPU 时间百分比 |
cpu sy | 系统态 CPU 时间百分比 |
cpu id | 空闲 CPU 时间百分比 |
以下是一个具体的实践步骤,展示如何使用 vmstat
监控系统资源:
打开终端: 在 Linux 或类 Unix 系统中打开终端。
运行 vmstat 命令:
vmstat 1 10
这将每隔 1 秒输出一次系统资源使用情况,总共输出 10 次。
分析输出结果:
procs r
的值较高,可能表示系统中有大量进程等待 CPU 资源。memory free
较低,可能需要增加物理内存或优化内存使用。swap si
和 swap so
较高,可能表示系统频繁进行内存与磁盘的交换操作,性能可能会受到影响。top
提供了更详细的进程信息和动态更新的界面,而 vmstat
更适合批量输出和脚本化处理。sar
可以记录历史数据并生成报表,而 vmstat
主要用于实时监控。cron
或其他脚本工具,定期运行 vmstat
并保存日志,以便后续分析。例如,将 vmstat
的输出保存到文件中:
vmstat 1 10 > vmstat.log
vmstat
是一个简单但功能强大的工具,可以帮助我们快速了解系统的整体资源使用情况。通过合理配置参数和分析输出结果,我们可以更好地管理和优化系统性能。