vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析(后续会介绍pidstat命令来展示各个进程的资源使用情况)
1.常规使用在使用vmstat命令时,最常用的就是vmstat -w 5
这里的5意思是每5秒输出一次
root@7bc18553126f:/# vmstat -w 5
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
r b swpd free buff cache si so bi bo in cs us sy id wa st
4 0 118168 95456 128572 1540068 0 0 28 39 102 73 1 0 98 0 0
1 0 118168 95172 128572 1540068 0 0 0 0 1232 357 25 0 75 0 0
1 0 118168 95424 128572 1540068 0 0 0 0 1270 385 25 0 75 0 0
1 0 118168 95424 128572 1540068 0 0 0 0 1223 334 25 0 75 0 0
字段含义解释:(来自https://blog.csdn.net/m0_38110132/article/details/84190319)
类别
项目
含义
说明
Procs(进程)
r
等待执行的任务数
展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
B
等待IO的进程数量
Memory(内存)
swpd
正在使用虚拟的内存大小,单位k
free
空闲内存大小
buff
已用的buff大小,对块设备的读写进行缓冲
cache
已用的cache大小,文件系统的cache
inact
非活跃内存大小,即被标明可回收的内存,区别于free和active
具体含义见:概念补充(当使用-a选项时显示)
active
活跃的内存大小
具体含义见:概念补充(当使用-a选项时显示)
Swap
si
每秒从交换区写入内存的大小(单位:kb/s)
so
每秒从内存写到交换区的大小
IO
bi
每秒读取的块数(读磁盘)
块设备每秒接收的块数量,单位是block,这里的块设备是指系统上所有的磁盘和其他块设备,现在的Linux版本块的大小为1024bytes
bo
每秒写入的块数(写磁盘)
块设备每秒发送的块数量,单位是block
system
in
每秒中断数,包括时钟中断
这两个值越大,会看到由内核消耗的cpu时间sy会越多
秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目
cs
每秒上下文切换数
CPU(以百分比表示)
us
用户进程执行消耗cpu时间(user time)
us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施了
sy
系统进程消耗cpu时间(system time)
sys的值过高时,说明系统内核消耗的cpu资源多,这个不是良性的表现,我们应该检查原因。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足
Id
空闲时间(包括IO等待时间)
一般来说 us+sy+id=100
wa
等待IO时间
wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。
1.1 以M为单位来展示在memory列里,默认展示单位为byte,我们可以将其转换为M后再展示(可读性会更好点)
root@7bc18553126f:/# vmstat -wS M 5
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
r b swpd free buff cache si so bi bo in cs us sy id wa st
11 0 115 92 125 1503 0 0 27 37 24 103 2 0 97 0 0
8 0 115 92 125 1503 0 0 0 0 4130 737 100 0 0 0 0
1.2 带上时间戳
root@7bc18553126f:/# vmstat -wtS M 5
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu-------- -----timestamp-----
r b swpd free buff cache si so bi bo in cs us sy id wa st UTC
11 0 115 92 125 1503 0 0 27 37 26 103 2 0 97 0 0 2022-03-13 04:19:04
8 0 115 92 125 1503 0 0 0 0 4181 883 100 0 0 0 0 2022-03-13 04:19:09
最后一列就是当前展示的时间戳
2.展示其他项 2.1 显示内存相关统计信息(vmstat -s)root@7bc18553126f:/# vmstat -s
2036420 K total memory
273324 K used memory
420736 K active memory
1195284 K inactive memory
94444 K free memory
128584 K buffer memory
1540068 K swap cache
1048572 K total swap
118168 K used swap
930404 K free swap
892339 non-nice user cpu ticks
0 nice user cpu ticks
85790 system cpu ticks
33333903 idle cpu ticks
82343 IO-wait cpu ticks
0 IRQ cpu ticks
5422 softirq cpu ticks
0 stolen cpu ticks
9171103 pages paged in
12608408 pages paged out
86 pages swapped in
29389 pages swapped out
52677867 interrupts
121424068 CPU context switches
1647059249 boot time
70139 forks
2.2 显示磁盘读写(vmstat -d)
root@7bc18553126f:/# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
loop0 0 0 0 0 0 0 0 0 0 0
loop1 0 0 0 0 0 0 0 0 0 0
...
nbd12 0 0 0 0 0 0 0 0 0 0
nbd13 0 0 0 0 0 0 0 0 0 0
nbd14 0 0 0 0 0 0 0 0 0 0
nbd15 0 0 0 0 0 0 0 0 0 0
vda 217495 5488 18342206 42669 20219738 520434 25216816 1004568 0 1548
总结:
最常用的可以简写为:vmstat -wtS M 5
如果希望将日志打印到某个文件,可以使用 vmstat -wtS M 5 | tee xxx.log
参考:Linux vmstat命令实战详解_浮生忆梦的博客-CSDN博客_vmstat