Linux系统之vmstat命令详解

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 的时间百分比。
idCPU 空闲时间百分比。
waCPU 等待 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 开销增加。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值