vmstat是Virtual Meomory Statistics(虚拟内存统计)缩写,可对操做系统的虚拟内存、进程、CPU活动进行监控。是对系统的总体状况进行统计,不足之处是没法对某个进程进行深刻分析。bash
语法格式:优化
vmstat [options] [delay [count]]
delay
:刷新时间间隔。若是不指定,只显示一条结果。操作系统
count
:刷新次数。若是不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。code
参数 | 说明 |
---|---|
-a | 显示活跃和非活跃内存 |
-f | 显示从系统启动至今的fork数量 |
-m | 显示slabinfo |
-n | 只在开始时显示一次各字段名称 |
-s | 显示内存相关统计信息及多种系统活动数量 |
-d | 显示磁盘相关统计信息 |
-p | 显示指定磁盘分区统计信息 |
-S | 使用指定单位显示。参数有 k 、K 、m 、M ,分别表明1000、102四、1000000、1048576字节(byte)。默认单位为K(1024 bytes) |
-V | 显示vmstat版本信息 |
类别:blog
项目 | 说明 |
---|---|
r | 等待执行的任务数,当这个值超过了CPU数目,就会出现CPU瓶颈了 |
b | 处在非中断睡眠状态的进程数,大于0表示进程阻塞 |
项目 | 说明 |
---|---|
swpd | 正在使用的swap大小单位K,若是大于0,表示物理内存不足 |
free | 空闲的物理内存空间 |
buff | 已使用的buff大小,对块设备的读写进行缓冲 |
cache | 已使用的cache大小,文件系统的cache |
inact | 非活跃内存大小 |
active | 活跃的内存大小 |
项目 | 说明 |
---|---|
si | 交换内存使用,由磁盘调入内存 |
so | 交换内存使用,由内存调入磁盘 |
项目 | 说明 |
---|---|
bi | 从块设备读入的数据总量(读磁盘) (KB/s),若是这个值大于0,表示物理内存不够用或者内存泄露了 |
bo | 写入到块设备的数据总理(写磁盘) (KB/s) ,若是这个值大于0,表示物理内存不够用或者内存泄露了 |
这2个值越大,会看到由内核消耗的CPU时间会越多。进程
项目 | 说明 |
---|---|
in | 每秒产生的中断次数 |
cs | 每秒产生的上下文切换次数 |
项目 | 说明 |
---|---|
us | 用户进程消耗的CPU时间百分比。us 的值比较高时,说明用户进程消耗的CPU时间多,可是若是长期超过50% 的使用,那么就该考虑优化程序算法或者进行加速了 |
sy | 内核进程消耗的CPU时间百分比,其中包括消耗在system、irq、softirq状态的时间。sy的值高时,说明系统内核消耗的CPU资源多,这并非良性的表现,咱们应该检查缘由 |
id | 系统空闲消耗的总CPU时间百分比 |
wa | IO等待消耗的CPU时间百分比。wa的值高时,说明IO等待比较严重,这多是因为磁盘大量做随机访问形成,也有多是磁盘的带宽出现瓶颈(块操做) |
st | Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown. |
不加任何参数:内存
[root@test ~]# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 18536908 381556 58920 35857652 0 0 2 6 0 0 2 2 96 1 0
以上示例显示的是自系统启动后它记录的统计信息的均值。在CPU一栏显示,CPU有2%的时间用于执行用户应用程序代码,2%的时间用于系统代码,其他96%的时间处于空闲状态。资源
每2秒刷新输出结果,共计10条数据:get
[root@test ~]# vmstat 2 10 |tee vmstat.log procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 3 18244556 320756 58848 37127060 0 0 2 6 0 0 2 2 96 1 0 2 2 18233548 319008 58856 37107488 4546 0 4554 64 35098 28464 5 5 84 6 0 2 1 18233548 365572 58864 36950716 8 0 8 640 40116 27700 6 7 83 5 0 1 2 18233292 321304 58880 37012480 134 0 134 92 35978 33730 5 2 88 6 0 1 1 18233292 374516 58880 36972972 12 0 12 106 31706 25987 3 2 90 5 0 4 2 18233292 302484 58888 37047228 8 0 10 32 26781 24285 5 3 87 5 0 1 2 18233292 371552 58904 36977100 12 0 12 78 30176 25186 5 3 87 5 0 3 0 18233292 307768 58912 37015744 24 0 24 42 36149 26812 1 5 89 5 0 0 3 18233036 377984 58920 36941756 194 0 212 64 35131 26675 2 3 90 5 0 3 2 18233036 567952 58920 36795824 22 0 22 0 30918 25781 2 2 90 6 0
以上示例中,第一组数据是CPU ticks
,显示的是自系统启动的CPU时间,这里的“tick”是一个时间单位。虽然精简的vmstat输出仅显示四个CPU状态——us、sy、id和wa,这里则显示了所有CPU ticks的分布状况。