vmstat 命令详解

时间:2021-10-24 15:38:20
作用:vmstat 的含义为显示虚拟内存状态(virtual memor statics),但是它可以报告关于进程,内存,I/O 等系统整体运行状态
选项:
-a 显示活动内页
-f 显示启动后创建的进程总数
-m 显示slab 信息
-n 头信息仅显示一次
-s 以表格方式显示事件计数器和内存状态
-d 报告磁盘状态
-p 显示指定的硬盘分区状态
-S 输出信息的单位

参数

事件间隔:状态信息刷新的时间间隔
次数:  显示报告的次数

实例:

vmstat 3  
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      0 952092  10236  38704    0    0    47     3   17   24  0  0 99  0  0
 0  0      0 952084  10236  38704    0    0     0     0    5    7  0  0 100  0  0
 0  0      0 952084  10236  38704    0    0     0     0    5    6  0  0 100  0  0
 0  0      0 952084  10236  38704    0    0     0     0    6    8  0  0 100  0  0
 0  0      0 952084  10236  38704    0    0     0     0    5    6  0  0 100  0  0
字段说明
Proc (进程)
*r  :  运行队列中进程数量, 这个值也可以判断是否需要增加CPU。(长期大于1)
*b :  等待IO 的进程数量
Memory (内存)
*swpd : 使用虚拟内存大小,如果swpd 的值不为0 , 但是SI, SO的值长期为0, 不会影响系统性能
*free  :  空闲物理内存大小
*buff  : 用作缓冲的内存大小
*cache : 用作缓存的内存大小, 如果cache的值大的时候, 说明cache处的文件数多, 如果频繁访问到的文件都被cache处, 那么磁盘的IO BI会非常小
Swap 
*si  : 每秒从交换区写到内存的大小, 由磁盘调入内存.  swapped in from disk
*so : 每秒写入交换区的内存大小, 由内存调入磁盘      swapped to disk 
IO (现在的Linux版本块的大小为1kb)
*bi : 每秒读取的块数   block received from a block device
*bo: 每秒写入的块数   block sent to a block device 
随机磁盘读写的时候, 这两个值越大能看到CPU的IO等待值也会变大
System 
*in : 每秒中断数
*cs : 每秒上下文切换数
CPU 
*us : 用户进程执行时间百分比(user time),us 的值比较高时,说明用户进程消耗的CPU时间多, 但是如果长期超50% 的使用,那么就应该考虑优化程序算法或者加速
*sy : 内核系统进程执行时间百分比(system time)
sy 的值高时, 说明系统内核消耗的CPU资源多, 需要检查原因
*wa : IO 等待时间百分比
wa 的值高时, 说明IO 等待比较严重, 这可能是由于磁盘大量随机访问造成, 也有可能是磁盘出现瓶颈
*id :  空闲时间百分比
 
文件:

/proc/meminfo

/proc/stat

/proc/*/stat