vmstat

vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。

 

1、语法:
vmstat [-a] [-n] [-S unit] [delay [ count]]
vmstat [-s] [-n] [-S unit]
vmstat [-m] [-n] [delay [ count]]
vmstat [-d] [-n] [delay [ count]]
vmstat [-p disk partition] [-n] [delay [ count]]
vmstat [-f]
vmstat [-V]

-a:显示活跃和非活跃内存
-n:只在开始时显示一次各字段名称
-m:显示slabinfo
-s:显示内存相关统计信息及多种系统活动数量
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、10241000000、1048576字节(byte)。默认单位为K(1024 bytes)

delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。

-f:显示从系统启动至今的fork数量 。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-V:显示vmstat版本信息。

 

2、示例:每隔2秒输出一次结果,抓取5次

 

 

3、各列参数含义:
类别 参数 含义 备注
procs(进程) r 运行队列中进程数量  
b 等待IO的进程数量  
memory(内存) swpd 使用虚拟内存大小,单位k 如果swpd的值不为0,但是si,so的值长期为0,这种情况不会影响系统性能
free 空闲物理内存大小  
buff 用作缓冲的内存大小 对块设备的读写进行缓冲
cache 用作缓存的内存大小 文件系统的cache;如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小
swap si 每秒从交换区写到内存的大小,由磁盘调入内存,单位:kb/s 内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗;如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
so 每秒写入交换区的内存大小,由内存调入磁盘
io bi 每秒读取的块数 块设备每秒接收的块数量,单位是block,这里的块设备是指系统上所有的磁盘和其他块设备,现在的Linux版本块的大小为1024bytes
bo 每秒写入的块数 设备每秒发送的块数量,单位是block;随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大
system(系统) in 每秒中断数,包括时钟中断

这两个值越大,会看到由内核消耗的cpu时间sy会越多

每秒上下文切换次数,例如调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目

cs 每秒上下文切换数
cpu(以百分比显示) us 用户进程执行时间百分比(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么该考虑优化程序算法或者进行加速
sy 内核系统进程执行时间百分比(system time) sy的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,应该检查原因;这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足
id 空闲时间百分比(包括io等待时间) 一般来说 us+sy+id=100
wa IO等待时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)
st 虚拟机使用的cpu时间  

 

4、活跃和非活跃内存

 vmstat -a 2 5 【-a 显示活跃和非活跃内存,所显示的内容除增加inact和active】

 

 inact:非活跃内存大小,即被标明可回收的内存,区别于free和active

 active:活跃的内存大小

 

5、常见问题及分析:

 1、如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重。

 2、如果bi,bo 长期不等于0,表示内存不足。

 3、r(运行队列)展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了。

    查看CPU核心数:cat /proc/cpuinfo|grep processor|wc -l

    当r值超过了CPU个数,就会出现CPU瓶颈,解决方法:增加CPU个数和核数;通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进而平衡系统任务;调整已有任务的优先级

 4、通过vmstat识别CPU满负荷:

    vmstat中CPU的度量是百分比的,当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU 满负荷工作并不能说明什么,Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。

    唯一能够确定CPU瓶颈的还是r(运行队列)的值。

 

posted @ 2022-03-01 16:45  心恩惠动  阅读(102)  评论(0编辑  收藏  举报