stat 命令家族(1)- 详解 vmstat

性能测试必备的 Linux 命令系列,可以看下面链接的文章哦

 

vmstat 介绍

  • Virtual Meomory Statistics,报告虚拟内存统计信息
  • 会统计进程信息、内存、交换区、IO、磁盘、CPU 等数据

 

vmstat 语法格式

vmstat [options] [delay [count]]
  • options:命令行参数,可选
  • delay:间隔多久统计一次数据,可选
  • count:统计一次,可选
  • 注意:若只传了 delay,则统计次数是无限次,结束统计后会打印本次所有数据的平均值

 

小栗子

vmstat 1 

每隔 1s 统计打印一次数据,统计无限次

 

vmstat 2 5

每隔 2s 统计打印一次数据,共统计 5 次

 

vmstat 命令行参数

简写 完整写法 参数后是否要指定一个值 作用
-a  –active F 显示活动和非活动内存
-n –one-header F 仅显示一次标题,而不是定期显示
-s –stats F 获取内存、CPU、交换区、中断次数、上下文切换次数等信息
-d –disk F 获取磁盘的详细信息(读写信息)
-D –disk-sum F 获取磁盘的一些摘要信息
-P –partition device T(device) 有关分区的详细统计信息
-S –unit character T(character)
  • 输出数值的单位
  • character 取:k, K, m or M (default is K)
  • k:1000
  • K:1024
  • m:1000000
  • M:1048576
-t –timestamp F 加一列显示当前时间
-V –version F 版本
-h –help F 帮助文档

 

vmstat 统计数据的字段说明

共有 6 个模块

 

procs:进程状态

字段 字段说明
r 处于 Runnable 状态的进程数量
b 处于不可中断睡吗状态的进程数量

 

memory:内存信息

字段 字段说明
swpd 已用虚拟内存
free 空闲内存
buff 用于缓冲区的内存
cache 用于缓存的内存
inact 不活动的内存量(-a)
active 活动的内存量(-a)

 

swap:交换区

字段 字段说明
si 每秒从交换区写到内存的大小
so 每秒写入交换区的内存大小

 

io:io 读写信息

现在的Linux版本块的大小为1024bytes

字段 字段说明
bi 每秒读取的块数
bo 每秒写入的块数

 

system:系统信息

字段 字段说明
in 每秒中断数,包括时钟中断
cs 每秒上下文切换次数

 

CPU:CPU 详细信息

这些是总 CPU 时间的百分比

字段 字段说明
us 用户态进程的 CPU 使用率
sy 内核态进程的 CPU 使用率
id 空闲 CPU 百分比
wa

等待 IO 的 CPU 使用率

st 从虚拟机偷取的 CPU 百分比

 

vmstat 数据来源

主要来自这三个文件

  1. /proc/meminfo
  2. /proc/stat
  3. /proc/*/stat

 

vmstat

这些信息主要来自 /proc/stat 

 

vmstat -s 

这些信息的分别来自于 /proc/meminfo 、 /proc/stat 和 /proc/vmstat 

 

vmstat -d

这些信息主要来自于 /proc/diskstats 

 

vmstat 的其他用法

打印活动内存和不活动内存量

vmstat -a 2 2

 

以 MB 单位输出结果

vmstat -S M 1 2

 

以 MB 单位输出各事件计数器和内存的统计信息

vmstat -s -S M 

 

vmstat 的注意事项

  • vmstat 不需要特殊权限
  • vmstat 报告旨在帮助确定系统瓶颈,所以它不会将自己视为正在运行的进程
  • 当前所有的 Linux 块都是 1024 字节, 旧内核可能报告的块为 512 字节,2048 字节或 4096 字节