问:如何使用 vmstat 命令了解 Linux 资源利用率?如何获取有关高磁盘 I/O 和内存使用情况的信息?
A. vmstat命令报告有关进程、内存、分页、块 IO、陷阱和 CPU 活动的信息。然而,vmstat 命令输出的真正优点是切中要点并且(简洁)易于阅读/理解。vmstat 命令的输出用于帮助识别系统瓶颈。请注意,Linux vmstat 并不将自身视为正在运行的进程。
以下是我的企业级系统的 vmstat 命令的输出:
$ vmstat -S M
输出:
procs --------------内存---------- ---交换-- -----io---- --system-- ----cpu- --- rb swpd 免费 buff 缓存 si so bi bo in cs us sy id wa 3 0 0 1963 607 2359 0 0 0 0 0 1 32 0 68 0
在哪里,
- 第一行只不过是六个不同的类别。第二行提供有关每个类别的更多信息。第二行提供了您需要的所有数据。
- -SM:vmstat 允许您选择单位(k、K、m、M),默认模式下默认为 K(1024 字节)。我使用 M 因为这个系统有超过 4 GB 的内存。如果没有 -M 选项,它将使用 K 作为单位
$ vmstat
输出:
procs --------------内存---------- ---交换-- -----io---- --system-- ----cpu- --- rb swpd 免费 buff 缓存 si so bi bo in cs us sy id wa 3 0 0 2485120 621952 2415368 0 0 0 0 0 1 32 0 68 0
Vm 模式的字段说明
(a) procs是进程相关的字段有:
- r:等待运行时的进程数。
- b:不间断睡眠的进程数。
(b)内存 与内存相关的字段有:
- swpd:使用的虚拟内存量。
- free:空闲内存量。
- buff:用作缓冲区的内存量。
- 缓存:用作缓存的内存量。
(c) swap 与 swap 相关的字段有:
- si:从磁盘换入的内存量 (/s)。
- so:交换到磁盘的内存量 (/s)。
(d) io是I/O相关字段有:
- bi:从块设备接收的块(块/秒)。
- bo:发送到块设备的块(块/秒)。
(e) system 是系统相关的字段有:
- in:每秒中断数,包括时钟。
- cs:每秒上下文切换的次数。
(f) cpu是与CPU相关的字段有:
这些是总 CPU 时间的百分比。
- us:运行非内核代码所花费的时间。(用户时间,包括美好时光)
- sy:运行内核代码所花费的时间。(系统时间)
- id:闲置时间。在 Linux 2.5.41 之前,这包括 IO 等待时间。
- wa:等待 IO 所花费的时间。Linux 2.5.41 之前,显示为零。
正如您所看到的,生成的第一个输出给出了自上次重新启动以来的平均数据。其他报告提供有关长度延迟的采样周期的信息。您需要使用延迟来采样数据,即通过设置间隔来收集数据。例如每 2 秒收集一次数据(或每 2 秒收集一次数据仅 5 次):
$ vmstat -S M 2
或
$ vmstat -S M 2 5
输出:
procs --------------内存---------- ---交换-- -----io---- --system-- ----cpu- --- rb swpd 免费 buff 缓存 si so bi bo in cs us sy id wa 3 0 0 1756 607 2359 0 0 0 0 0 1 32 0 68 0 3 0 0 1756 607 2359 0 0 0 0 1018 65 38 0 62 0 3 0 0 1756 607 2359 0 0 0 0 1011 64 37 0 63 0 3 0 0 1756 607 2359 0 0 0 20 1018 72 37 0 63 0 3 0 0 1756 607 2359 0 0 0 0 1012 64 37 0 62 0 3 0 0 1756 607 2359 0 0 0 0 1011 65 38 0 63 0 3 0 0 1995 607 2359 0 0 0 0 1012 62 35 2 63 0 3 0 0 1731 607 2359 0 0 0 0 1012 64 34 3 62 0 3 0 0 1731 607 2359 0 0 0 0 1013 72 38 0 62 0 3 0 0 1731 607 2359 0 0 0 0 1013 63 37 0 63 0
这是大多数系统管理员识别系统瓶颈的方法。我希望大家发现 vmstat 数据简洁且易于阅读。
也可以看看:
- Linux 显示有关已安装硬件的信息
- Linux检查内存使用情况
- 如何了解Linux CPU 利用率?
- FreeBSD 显示有关系统的信息
- Linux 以简单格式显示从 /proc 文件系统收集的系统硬件状态信息
- 阅读 vmstat 手册页