boxmoe_header_banner_img

Hello! 欢迎来到悠悠畅享网!

文章导读

Linux命令行中vmstat命令的实用技巧


avatar
作者 2025年10月12日 6

vmstat 是 linux 系统性能监控工具,可实时查看进程、内存、交换、I/O 和 CPU 使用情况;第一行输出为系统启动以来的平均值,后续为采样数据;关键字段包括:r(运行队列进程数)、b(不可中断睡眠进程)、swpd(使用虚拟内存)、free(空闲内存)、si/so(交换输入/输出)、bi/bo(块设备读写)、wa(I/O 等待)等;wa 高表示 I/O 瓶颈,si/so 持续大于 0 表示内存不足导致频繁换页;通过 vmstat 2 5 可周期采样观察趋势,结合 iostat、free、top 等命令深入定位问题。

Linux命令行中vmstat命令的实用技巧

vmstat 是 Linux 中一个简洁但功能强大的性能监控工具,能实时查看系统的进程、内存、交换、I/O 和 CPU 使用情况。它不依赖其他服务,输出清晰,适合快速诊断系统瓶颈。掌握一些实用技巧,能更高效地利用 vmstat 进行系统分析。

理解 vmstat 输出字段含义

运行 vmstat 后,第一行显示的是自系统启动以来的平均值,后续行才是实时数据(如果指定了采样间隔)。熟悉每一列的意义是正确解读的关键:

  • procs (r/b):r 表示等待运行的进程数(可运行状态),b 是处于不可中断睡眠状态的进程数(如等待 I/O)
  • memory (swpd/free/buff/cache):swpd 是使用的虚拟内存大小;free 是空闲物理内存;buff 和 cache 分别是用于缓冲和缓存的内存
  • swap (si/so):si 表示每秒从磁盘换入内存的数据量(kb),so 是每秒换出到磁盘的数据量。若 si/so 持续大于 0,说明内存不足
  • io (bi/bo):bi 是每秒从块设备读取的数据量,bo 是写入块设备的数据量。高 bi/bo 可能表示频繁的磁盘操作
  • system (in/cs):in 是每秒中断次数,cs 是上下文切换次数。过高可能意味着系统负载大或资源争用
  • CPU (us/sy/id/wa/st):us 用户态使用,sy 内核态使用,id 空闲,wa 等待 I/O,st 被虚拟机偷走的时间。wa 高通常说明 I/O 成为瓶颈

定期采样监控系统动态

单次执行 vmstat 只反映瞬时状态,结合时间间隔可观察趋势。例如:

vmstat 2 5

表示每 2 秒输出一次,共输出 5 次。这种用法适合在系统响应变慢时快速抓取几组数据,判断是否存在持续的高负载或内存压力。

若想长时间监控,可配合重定向保存结果:

vmstat 10 > vmstat.log &

每 10 秒记录一次,后台运行便于事后分析。

Linux命令行中vmstat命令的实用技巧

巧文书

巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

Linux命令行中vmstat命令的实用技巧8

查看详情 Linux命令行中vmstat命令的实用技巧

重点关注 I/O 和内存瓶颈

当系统变慢时,先看 wa 和 si/so 的值:

  • 如果 wa 值较高(比如超过 20%),且 bi/bo 数值也大,说明磁盘 I/O 负载重,可能是数据库操作、大量日志写入或备份任务导致
  • 如果 si 或 so 持续大于 0,说明系统正在频繁使用 swap,这会显著降低性能。应检查内存使用情况,考虑优化应用或增加物理内存
  • r 列数值长期大于 CPU 核心数,说明有进程排队,系统过载

例如,看到如下输出:

r b swpd free buff cache si so bi bo in cs us sy id wa
4 1 204800 123456 98765 54321 0 120 100 3000 1500 2000 20 30 40 10

这里 r=4 表示有 4 个进程在竞争 CPU,so=120 表示持续换出内存到磁盘,wa=10% 也不低,综合判断可能存在内存不足引发的 I/O 压力。

结合其他命令深入排查

vmstat 提供宏观视角,但定位具体问题需结合其他工具:

  • 发现高 wa?用 iostat -x 1 查看具体哪个设备 I/O 延迟高
  • 怀疑内存不够?运行 free -h 看整体内存和 swap 使用率
  • 想知道哪些进程占用资源?用 tophtop 查看实时进程列表

比如 vmstat 显示 so 不为零,接着运行 free 发现 swap 使用率超过 80%,基本可以确认需要优化内存使用或限制某些进程的内存消耗。

基本上就这些。vmstat 虽然输出紧凑,但信息密度高,合理使用能快速识别系统异常。关键是理解每个字段的实际意义,并结合上下文和其他工具交叉验证。不复杂但容易忽略细节。



评论(已关闭)

评论已关闭

text=ZqhQzanResources