vmstat
vmstat [options] [delay [count]]
报告虚拟内存的统计数据
描述
- vmstat报告进程、内存、页面、块IO、陷入、磁盘、以及CPU活动的信息
- 第一个报告产生的是从最近一次重启以来的平均数据。
- 额外的报告给出的信息是在一个长度为delay的采样周期中的数据
- 在以上两种报告中,进程和内存的报告都是实时的。
用法总结
vmstat 指定模式参数 采样参数
- 1 模式参数 每种模式都有对应的输出
- 磁盘模式
-d
-D
- 磁盘分区模式
-p
- VM模式
-a
-f
-s
- slab模式
-m
- 2 采样参数 无非就是第一个是采样周期,第二个是采样次数,不过第一个采样是从上次重启以来到现在的一个报告
选项
采样参数
- delay 秒为单位的两次更新之间的延时。如果没有指定delay参数,就只产生一个从重启以来的平均值报告
- count 更新的次数。如果没有count参数,且定义了delay参数的话,默认是无限次
VM模式
- -a, --active 展示活跃的或者不活跃的内存
- -f, --forks 展示从启动以来的fork次数。这个包括
fork
vfork
clone
系统调用,并且等于总的被创建的任务数。每个进程是由一个或者多个任务表示的,取决于线程的使用情况。这个展示不会反复。 - -s, --stats 展示一系列的事件计数器以及内存统计信息
slab模式
磁盘模式
- -d, --disk 报告磁盘的统计数据
- -D, --disk-sum 报告关于磁盘活动的描述信息
磁盘分区模式
- -p, --partition device 关于分区的详细统计信息
输出微调
- -n, --one-header 仅仅展示标题行一次,而不是周期性地展示标题栏
- -S, --unit character 切换输出中的数据单位:
k(1000) K(1024) m(1000000) M(1048576)
- 注意,这个不会影响到swap(si/so)或者block(bi/bo)字段
- -t, --timestamp 添加时间戳到每行
- -w, --wide 宽输出模式(适用于内存量更大的系统,其中默认输出模式会遭受不必要的列损坏)。 输出每行超过80个字符。
- -V, --version
- -h, --help
对于VM模式的字段描述
进程
标题 | 详解 |
---|
r | runnable的进程(包含正在运行的或者等待运行时间的进程) |
b | 处于不可中断的休眠的进程 |
内存
标题 | 详解 |
---|
swpd | 已经使用的虚拟内存的数量 |
free | 空闲的内存的数量 |
buff | 作为buffer使用的内存的数量 |
cache | 作为cache使用的内存的数量 |
inact | 要带-a选项才有,不活跃内存的数量 |
active | 要带-a选项才有,活跃内存的数量 |
Swap
标题 | 详解 |
---|
si | 从磁盘交换的内存量(/s) |
so | 交换到磁盘的内存量(/s) |
IO
标题 | 详解 |
---|
bi | 从一个块设备中接收到的块的数量(blocks/s) |
bo | 发送到一个块设备的块的数量(blocks/s) |
系统
标题 | 详解 |
---|
in | 每秒的中断数,包含时钟的中断 |
cs | 每秒的上下文交换数量 |
CPU
标题 | 详解 |
---|
us | 运行非内核代码花的时间 (用户层时间,包含nice时间) |
sy | 运行内核代码花的时间 (系统层时间) |
id | 空转花的时间 |
wa | 等待IO花的时间 |
st | 从虚拟机偷来的时间 |
对于磁盘模式的字段描述
读
标题 | 详解 |
---|
total | 成功完成的总的读取次数 |
merged | 聚合的读取(最终以一次IO完成) |
sectors | 成功读取的扇区数 |
ms | 花在读上的ms数 |
写
标题 | 详解 |
---|
total | 成功完成的总的写入次数 |
merged | 聚合的写入(最终以一次IO完成) |
sectors | 成功写入的扇区数 |
ms | 花在写上的ms数 |
IO
对于磁盘分区模式的字段描述
标题 | 详解 |
---|
reads | |
read sectors | |
writes | 对这个分区的写次数 |
requested writes | 向分区的总的写请求数 |
对于SLAB模式的字段描述
标题 | 详解 |
---|
cache | Cache的名称 |
num | 当前活跃对象的数量 |
total | 可用对象的总数 |
size | 每个对象的大小 |
pages | 有至少一个活跃对象的页的数量 |
注意事项
- vmstat并不需要特殊权限
- 这些报告都是用来帮助识别系统瓶颈的,Linux的vmstat并不会将自己当做一个运行进程来统计的
- 所有的linux块当前都是1024B,老的内核可能将块当做512B|2048B|4096B来报告。
- vmstat使用slabinfo1.1