vmstat 是一个用于监控 Linux 系统性能的工具,能够提供关于 CPU、内存、I/O 和系统整体性能的详细信息。它以简洁的输出格式显示系统的运行状态,非常适合快速诊断性能问题。

1. 启动 vmstat

在终端中输入以下命令即可启动:

vmstat

默认情况下,vmstat 会显示一次系统性能的快照。如果需要实时监控,可以指定刷新间隔和次数。

2. 基本语法

vmstat [刷新间隔] [刷新次数]
  • 刷新间隔:每次输出之间的时间间隔(单位为秒)。
  • 刷新次数:总共输出的次数。如果不指定刷新次数,则会一直运行直到手动停止。
示例:
vmstat 2 5   # 每隔 2 秒刷新一次,共输出 5 次

3. vmstat 的输出格式

vmstat 的输出分为以下几个部分:

(1) procs(进程相关)

显示与进程相关的统计信息。

字段名 含义
r 运行队列中的进程数(等待 CPU 调度的进程数)。
b 处于不可中断睡眠状态的进程数(通常是等待 I/O 完成的进程数)。
(2) memory(内存相关)

显示内存使用情况。

字段名 含义
swpd 使用的交换分区大小(单位为 KB)。
free 空闲的物理内存大小(单位为 KB)。
buff 用作缓冲区的内存大小(单位为 KB)。
cache 用作缓存的内存大小(单位为 KB)。
(3) swap(交换分区相关)

显示交换分区的活动情况。

字段名 含义
si 每秒从磁盘交换到内存的数据量(单位为 KB)。
so 每秒从内存交换到磁盘的数据量(单位为 KB)。
(4) io(I/O 相关)

显示块设备的 I/O 活动。

字段名 含义
bi 每秒从块设备读取的数据量(单位为 KB)。
bo 每秒写入块设备的数据量(单位为 KB)。
(5) system(系统相关)

显示系统调用和中断的统计信息。

字段名 含义
in 每秒的中断次数(包括时钟中断)。
cs 每秒的上下文切换次数。
(6) cpu(CPU 相关)

显示 CPU 时间分配情况(百分比)。

字段名 含义
us 用户空间占用 CPU 的时间百分比。
sy 内核空间占用 CPU 的时间百分比。
id CPU 空闲时间百分比。
wa CPU 等待 I/O 操作完成的时间百分比。
st 虚拟机偷取的时间百分比(仅在虚拟化环境中显示)。

4. 示例输出

运行以下命令:

vmstat 2

输出可能如下:

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  10240  51200  20480 102400    0    0    10    20  100  200  5  2 90  3  0

解释:

  • procs:有 1 个进程在运行队列中,没有处于不可中断睡眠状态的进程。
  • memory:使用了 10 MB 的交换分区,空闲内存为 51 MB,缓冲区占用了 20 MB,缓存占用了 102 MB。
  • swap:没有数据从磁盘交换到内存或从内存交换到磁盘。
  • io:每秒从块设备读取 10 KB 数据,写入 20 KB 数据。
  • system:每秒发生 100 次中断,200 次上下文切换。
  • cpu:5% 的时间用于用户空间,2% 的时间用于内核空间,90% 的时间空闲,3% 的时间等待 I/O。

5. 常用参数

vmstat 支持一些常用参数来调整其行为:

参数 功能
-a 显示活跃和非活跃内存(替代默认的 buffcache 列)。
-f 显示自系统启动以来的 fork 数量(创建的进程总数)。
-s 显示详细的内存统计信息(以表格形式)。
-d 显示每个块设备的 I/O 统计信息。
-p <设备> 显示指定块设备的详细统计信息。
-t 在输出中包含时间戳。
-m 显示 slab 缓存的使用情况。

6. 示例用法

(1) 实时监控系统性能

每隔 2 秒刷新一次,共输出 10 次:

vmstat 2 10
(2) 查看活跃和非活跃内存

显示活跃和非活跃内存的使用情况:

vmstat -a
(3) 查看详细的内存统计信息

显示详细的内存统计信息:

vmstat -s
(4) 查看块设备的 I/O 统计信息

显示所有块设备的 I/O 统计信息:

vmstat -d
(5) 查看指定块设备的统计信息

显示 /dev/sda 的统计信息:

vmstat -p /dev/sda
(6) 查看系统启动以来的 fork 数量

显示自系统启动以来创建的进程总数:

vmstat -f

7. 分析与优化建议

  • r:表示运行队列中有大量进程等待 CPU 调度,可能是 CPU 性能瓶颈。
  • wa:表示 CPU 花费大量时间等待 I/O 操作完成,可能是磁盘性能瓶颈。
  • siso:表示频繁使用交换分区,可能是内存不足。
  • bibo:表示大量的磁盘读写操作,可能是 I/O 密集型任务导致的瓶颈。
  • cs:表示频繁的上下文切换,可能导致 CPU 开销增加。
Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐