vmstat
是一个常用的系统性能监控工具,它可以报告关于内存、交换、I/O、系统活动等方面的信息。通过 vmstat
,我们可以实时查看系统的运行状态,包括 CPU 使用率、内存使用情况、磁盘 I/O 等等。
vmstat
的全称是 virtual memory statistics(虚拟内存统计),它最初设计用于分析虚拟内存的使用情况,但随着时间推移,它已经扩展为一个多用途的系统监控工具。
vmstat [options] [delay [count]]
如果不指定 delay
和 count
,vmstat
将只打印一次当前的状态。
-a
: 显示活跃和非活跃的内存页。-d
: 显示磁盘统计信息。-n
: 在多次输出时,仅在第一次输出时显示标题行。-s
: 显示各种系统的统计摘要。-m
: 显示 slabinfo 统计信息。-p
: 显示分区统计信息。-t
: 显示时间戳。执行 vmstat
后,会得到以下主要字段:
字段 | 描述 |
---|---|
procs | 进程相关的信息:r (运行队列中的进程数)、b (处于不可中断睡眠状态的进程数) |
memory | 内存相关信息:swpd (使用的交换空间大小)、free (空闲内存大小)、buff (用作缓冲的内存大小) |
swap | 交换相关信息:si (从磁盘换入内存的数据量)、so (从内存换出到磁盘的数据量) |
io | 输入输出相关信息:bi (块设备接收的数据量)、bo (块设备发送的数据量) |
system | 系统相关信息:in (每秒中断数)、cs (每秒上下文切换数) |
cpu | CPU 使用情况:us (用户态CPU时间)、sy (内核态CPU时间)、id (空闲CPU时间) |
vmstat
大多数 Linux 发行版默认已安装 vmstat
,如果没有可以使用包管理器安装:
# Ubuntu/Debian
sudo apt-get install procps
# CentOS/RHEL
sudo yum install procps
vmstat
这将显示系统当前的状态。
每 2 秒刷新一次,共刷新 5 次:
vmstat 2 5
vmstat -a
vmstat -d
vmstat -s
假设我们执行了 vmstat 2 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 123456 7890 45678 0 0 0 0 123 456 7 8 85 0 0
0 0 0 123456 7890 45678 0 0 0 0 123 456 7 8 85 0 0
0 0 0 123456 7890 45678 0 0 0 0 123 456 7 8 85 0 0
vmstat
,但提供更详细的进程信息。