Linux vmstat 命令

Linux 命令大全 Linux 命令大全


什么是 vmstat 命令

vmstat(Virtual Memory Statistics)是 Linux 系统上一个功能强大的性能监控工具,它能够实时报告系统的进程、内存、交换分区、I/O 块和 CPU 活动等关键性能指标。

核心功能

  • 内存监控:显示物理内存和交换空间的使用情况
  • CPU 使用率:展示用户进程、系统进程和空闲时间的占比
  • 进程状态:报告运行中、等待和阻塞的进程数量
  • I/O 统计:提供块设备读写操作的详细信息

基本语法与常用参数

基本语法格式

vmstat [选项] [时间间隔] [次数]

常用参数说明

参数 说明
-a 显示活跃和非活跃内存
-d 显示磁盘统计信息
-p 显示指定磁盘分区的统计信息
-s 显示内存相关统计信息的汇总
-m 显示 slab 信息
-t 在输出中增加时间戳
-S 指定单位显示(k/K/m/M,分别代表 1000/1024/1000000/1048576)

输出字段详解

执行 vmstat 命令后,输出通常分为以下几个部分:

1. 进程信息

procs
r: 运行队列中的进程数量
b: 等待 I/O 的进程数量

2. 内存信息

memory
swpd: 使用的虚拟内存大小(KB)
free: 空闲的物理内存大小(KB)
buff: 用作缓冲区的内存大小(KB)
cache: 用作缓存的内存大小(KB)

3. 交换分区信息

swap
si: 每秒从磁盘读入交换区的内存大小(KB/s)
so: 每秒写入磁盘的交换区内存大小(KB/s)

4. I/O 信息

io
bi: 每秒从块设备接收的块数(blocks/s)
bo: 每秒发送到块设备的块数(blocks/s)

5. 系统信息

system
in: 每秒中断数(包括时钟中断)
cs: 每秒上下文切换次数

6. CPU 使用率

cpu
us: 用户进程占用 CPU 时间百分比
sy: 系统进程占用 CPU 时间百分比
id: 空闲 CPU 时间百分比
wa: 等待 I/O 的 CPU 时间百分比
st: 被虚拟机偷取的时间百分比

实用示例解析

示例 1:基本监控(每 2 秒刷新一次)

实例

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      0 123456  78900 456789    0    0     5    12  345 6789 10  5 85  0  0

示例 2:显示磁盘统计信息

实例

vmstat -d

输出将显示每个磁盘的读写统计,包括读/写次数和扇区数。

示例 3:带时间戳的监控(每 5 秒一次,共 3 次)

实例

vmstat -t 5 3

输出会在每行前添加时间戳,便于记录和分析。


性能问题诊断指南

1. CPU 瓶颈判断

  • us 值高:用户进程消耗大量 CPU,可能需要优化应用程序
  • sy 值高:系统内核消耗大量 CPU,可能系统调用过多
  • wa 值高:I/O 等待时间长,可能是磁盘瓶颈

2. 内存问题诊断

  • si/so 持续不为 0:表示系统在使用交换分区,物理内存可能不足
  • free 值持续减少:可能内存泄漏

3. 进程阻塞问题

  • b 列数值大:表示多个进程在等待 I/O 操作

最佳实践建议

  1. 监控周期选择:生产环境建议 5-10 秒间隔,避免影响系统性能
  2. 长期监控:结合 nohup 将输出重定向到文件
    nohup vmstat 10 360 > vmstat.log &
  3. 综合分析:结合 topiostat 等工具一起使用
  4. 基准测试:系统正常时记录基准数据,便于异常时对比

常见问题解答

Q1: vmstat 和 top 命令有什么区别?

  • top 提供进程级别的详细信息
  • vmstat 提供系统整体资源使用情况的概览

Q2: si/so 值很高说明什么?

表示系统频繁使用交换分区,可能是物理内存不足,建议增加内存或优化应用程序内存使用。

Q3: 如何监控特定磁盘?

使用 -p 参数指定磁盘分区:

实例

vmstat -p /dev/sda1

通过掌握 vmstat 命令,您将能够快速诊断 Linux 系统的性能瓶颈,为系统优化提供数据支持。建议在实际工作中结合其他监控工具一起使用,以获得更全面的系统性能视图。

Linux 命令大全 Linux 命令大全