返回
Featured image of post Linux 命令 —— vmstat

Linux 命令 —— vmstat

vmstat

报告虚拟内存统计信息:进程,内存,分页,块 IO,陷阱 (traps)、磁盘和 cpu 活动。

用法

vmstat [options] [delay [count]]

vmstat [-f] [-s] [-m]
vmstat [-S unit]
vmstat [-d]
vmstat [-p disk partition]
vmstat [-V]

选项

delay  更新之间的延迟,以秒为单位。如果未指定延迟,则仅打印一个报告:自引导以来的平均值。

count  更新次数。如果未指定计数且指定了延迟(delay),则count默认为无穷大。

-a, --active
      显示活动和非活动内存(2.5.41及之后的版本)

-f, --forks
      显示自引导以来的fork数。
      这包括fork,vfork和clone系统调用,并且是相当于创建的任务总数。
      每个进程由一个或多个任务表示,具体取决于线程用法。此显示不重复(也就是只显示一次)。

-m, --slabs
      显示slabinfo。【相关字段含义见下面部分】

-n, --one-header
      标题仅显示一次而不是定期显示。

-s, --stats
      显示各种事件计数器和内存统计信息。此显示不重复(也就是只显示一次)。

-d, --disk
      报告磁盘信息(2.5.70及之后版本)

-D, --disk-sum
      报告一些有关磁盘活动的摘要统计信息。

-p, --partition device
      分区的详细统计信息。 (2.5.70及之后版本).

-S, --unit character
      更换输出的单位:1000(k),1024(K),1000000(m),1048576(M) 字节。
      注意,这不会改变交换(si/so)或块(bi/bo)字段。

-t, --timestamp
      为每一行附加时间戳。

-w, --wide
      宽屏输出模式(对于具有较高内存量的系统非常有用,其中默认输出模式会受到不必要的列断裂影响)。
      输出宽度会超过每行80个字符。

-V, --version
      显示版本信息并退出。

-h, --help
      显示帮助信息并退出。

字段描述

VM 模式字段描述

  • 进程
    • r: 可运行进程的数量 (正在运行 + 就绪状态)。
    • b: 处于不可中断睡眠的进程数量。
  • 内存
    • swpd: 使用的虚拟内存量。
    • free: 空闲内存量。(idle)
    • buff: 用作缓冲区 (buffer) 的内存量。
    • cache: 用作缓存 (cache) 的内存量。
    • inact: 非活动内存量。(-a 选项)
    • active: 活动内存量。(-a 选项)
  • 交换内存
    • si: 从磁盘交换的内存量(/s)。
    • so: 交换到磁盘的内存量(/s)。
  • IO
    • bi: 从块设备接收的块数(blocks/s)。
    • bo: 发送到块设备的块数(blocks/ s)。
  • 系统
    • in: 每秒的中断数,包括时钟。
    • cs: 每秒上下文切换次数。
  • CPU
    • 这些是总 CPU 时间的占比。
    • us: 运行非内核代码所花费的时间。 (用户时间,包括 nice 时间)
    • sy: 运行内核代码所花费的时间。 (系统时间)
    • id: 空闲时间。在 2.5.41 版本之前,这包括 IO 等待时间。
    • wa: 等待 IO 的时间。在 2.5.41 版本之前,包含在空闲状态。
    • st: 从虚拟机中窃取的时间。在 Linux 2.6.11 之前,未知。【???】

DISK 模式字段描述

  • 读 (reads)
    • total: 完全成功的读总数(次数还是字节?应该是次数,因为换单位 (K 或 M),数值也不改变)。
    • merged: 分组 (groups) 读取 (导致一个 I/O)。
    • sectors: 成功读取的扇区数。
    • ms: 花在读上的毫秒数。
  • 写 (writes)
    • total: 完全成功的写总数。
    • merged: 分组写 (导致一个 I/O)。
    • sectors: 成功写的扇区数。
    • ms: 花在写上的毫秒数。
  • IO(input/output)
    • cur: 正在处理的 IO。
    • s: 花在 I/O 上的数。

DISK PARTITION 模式字段描述

  • reads: 发送到此分区上的读的总数。
  • read sectors: 分区上读的扇区总数。
  • writes: 发送到此分区上的写的总数。
  • requested writes: 此分区发出的写请求总数。

SLAB 模式字段描述

  • cache: 缓存名称。
  • num: 当前活动对象数量。
  • total: 有效/可用对象总数。
  • size: 每个对象的大小。
  • pages: 具有至少一个活动对象的页面数。

示例

显示内存、CPU、中断、fork 等总览信息

vmstat -s

保持更新固定次数

vmstat -a 2 // 每 2s 更新一次,一直更新 vmstat -a 1 100 // 每 1s 更新一次,更新 100 次

显示启动以来的 fork 数量

vmstat -f

显示某个分区统计信息

vmstat -p sda1

更换输出单位

vmstat -s -S M

显示 slab 内存对象信息

vmstat -m

疑问

  • st: 从虚拟机中窃取的时间?
  • 磁盘分区的相关字段不理解?

参考

  • Linux man page
相信美好的事情即将发生。
Built with Hugo
Theme Stack designed by Jimmy