Linux系统状态监控命令——vmstat命令用法详解

TangLu 未命名 2016-11-17 3370 0

vmstat命令是Viryual Memor Statics的缩写,翻译过来是显示虚拟内存状态,但实际vmstat命令还可以显示关于进程、内存、I/O等系统整体运行状态。 


vmstat命令语法 


vmstat [options]


vmstat命令常用选项: 

-a:显示活动内页

-f:显示启动后创建的进程总数

-n:头信息仅显示一次

-s:以表格方式显示事件计数器和内存状态

-d:报告磁盘状态

-p:显示指定的硬盘分区状态

-S:输出信息的单位

除了上述选项可以使用外,还有两个参数,即指定刷新状态信息的间隔以及显示次数


vmstat -a 3 5  #3秒刷新一次,总共获取5次信息

vmstat命令报告分析:


QQ截图20161117104832.png


——————Procs(进程)——————

r:运行队列中的进程数量。当这个值长期大于CPU个数时基本可以判断CPU遇到了瓶颈,也就是说r不能超过CPU个数。结合cpu列中的id值(CPU空闲时间),如ID也小于40那就确实可以考虑CPU升级问题。

b:被阻塞的进程数量,数值越大说明系统阻塞越严重。


——————Memory(内存)——————

swpd:使用虚拟内存的大小,通常为0,越小越好。如果swpd的值不为0,但是si、so的值长期为0,不影响系统性能。 

free:空闲物理内存大小。默认以K为单位。 

buff:用作缓冲的内存大小。 

cache:用作缓存的内存大小。如果cache值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。 


——————Swap—————— 

si: 每秒从交换区写到内存的大小,由磁盘调入内存。 

so: 每秒写入交换区的内存大小,由内存调入磁盘。 

注意:内存够用的时候这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。 


——————IO(现在的Linux版本块的大小为1kb)——————

bi:每秒读取的块数 

bo:每秒写入的块数 

注意:随机磁盘读写的时候这2个值越大(如超出1024k),CPU在IO等待的值也会越大。有一个说法是bi+bo>1000则说明磁盘有瓶颈。


——————system(系统)——————

in:每秒中断数,包括时钟中断。

cs:每秒上下文切换数。 

注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。 


——————CPU(以百分比表示)——————

us:用户进程执行时间百分比(user time),us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。 

sy: 内核系统进程执行时间百分比(system time) sy的值如果大于30%,说明系统内核消耗的CPU资源多,应该检查原因。

id: 空闲时间百分比 

wa: IO等待时间百分比。wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈。

st:虚拟机占用时间百分比。

评论