前言

vmstat是virtual memory statistics 的缩写,它是Linux下一个非常有用的监控工具,除了内存之外,还提供 块 IO、CPU 时间 等额外的信息

1、语法

vmstat 命令的执行不需要特殊的权限,普通用户就可以执行,其语法形式如下

1
vmstat [options] [delay [count]]

delay 表示数据更新间隔,单位是秒,如果没有指定此值,表示系统启动以来的平均时间,而且此时只输出一次结果
count 表示输出次数,如果没有指定该值,但是指定了 delay 的值,则表示无限次

2、字段说明

在命令行输入 vmstat 并回车, 会输出一次结果

1
2
3
4
5
[root@cghost22 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0 991324    932 537336    0    0     0     0    3    4  0  0 100  0  0
[root@cghost22 ~]#
字段 说明
r 可运行进程的数量,包括运行态和就绪态
b 处于不可中断睡眠状态的进程数量
swpd 虚拟内存使用量
free 空闲内存
buff 用作buffer的内存数量
cache 用作cache的内存数量
si 从磁盘换入内存的数量
so 从内存换出到磁盘的数量
bi 从块设备接收的块,单位:块/秒
bo 发送到块设备的块,单位:块/秒
in 每秒中断数,包括时钟中断
cs 每秒上下文切换数
us 用户态执行时间
sy 内核态执行时间
id CPU空闲时间
wa 等待IO的时间
st 从虚拟机中偷取的时间

3、常见选项

选项 说明
-a 显示活跃和非活跃内存
-f 从系统启动至今 fork 的数量,包括 fork、vfork 以及 clone 等系统调用
-s 显示系统事件计数以及内存统计信息
-d 报告磁盘统计信息
-D 统计活动磁盘信息
-p 指定分区的详细信息
-t 追加一列时间显示
-S 按照指定字节单位显示
-w 结果按照宽模式显示
-V vmstat的版本

4、常见用法

vmstat 命令主要用于识别系统的瓶颈,统计数据的时候,它不会包含自身进程
按照指定时间间隔和次数输出

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[root@cghost22 ~]$ vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0  12552 148356 234324 3382956    0    0     1    21    4    4  2  2 97  0  0
 1  0  12552 148264 234324 3382980    0    0     0     0 14974 27478  3  2 96  0  0
 1  0  12552 148232 234324 3382984    0    0     0    14 14384 27181  3  2 96  0  0
 0  0  12552 148376 234332 3383052    0    0     0   204 14197 26812  4  2 94  0  0
 0  0  12552 148512 234332 3383088    0    0     0     4 14398 27155  3  2 95  0  0
 0  0  12552 147892 234332 3383128    0    0     0   210 15515 28802  3  2 95  0  0
 1  0  12552 148388 234332 3383156    0    0     0     0 15147 28042  3  2 95  0  0
 0  0  12552 148264 234332 3383168    0    0     0     4 14380 27395  3  1 96  0  0
 0  0  12552 148264 234336 3383216    0    0     0   198 14430 27008  3  1 95  0  0
 2  0  12552 148140 234336 3383252    0    0     0     6 14233 27161  3  2 95  0  0

2 表示每隔 2 秒输出一次结果
10 表示总共输出 10 次,10 次之后程序自动结束