vmstat --help
vmstat输出字段说明
Procs(进程)
Memory(内存)
swap
io
system
cpu(以百分比表示)
vmstat -a:显示活跃和非活跃内存
vmstat -d:查看磁盘的读/写
vmstat -f:查看系统已经fork了多少次
vmstat -s:查看内存使用的详细信息
vmstat -m:获取
slab
vmstat -w宽版输出
vmstat -t显示时间
vmstat -wt宽版输出并显示时间
vmstat 秒数
vmstat 间隔秒数 采集次数
参考资料
vmstat命令:了解系统负载
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果。在学习vmstat命令前,我们先了解一下Linux系统中关于物理内存和虚拟内存相关信息。
1 | [root@localhost ~]# vmstat |
vmstat —help
1 | [root@localhost ~]# vmstat |
vmstat输出字段说明
Procs(进程)
r: 运行队列中进程数量。
b: 等待IO的进程数量
Memory(内存)
swpd: 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
swap
si: 每秒从交换区写到内存的大小
so: 每秒写入交换区的内存大小
io
(现在的Linux版本块的大小为1024bytes)
bi: 每秒读取的块数
bo: 每秒写入的块数
system
in: 每秒的硬件中断数(interrupt),包括时钟中断
cs: 每秒上下文切换数。每秒的环境切换次数(context switch)
cpu(以百分比表示)
us: 用户进程执行时间(user time)。us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy: 系统进程执行时间(system time)。sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
id: 空闲时间(包括IO等待时间)(id=idle),中央处理器的空闲时间 。以百分比表示。
wa: 等待IO时间(wa=wait for disk I/O)。wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
st:被虚拟机所盗用的 CPU 百分比。
如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重。
如果bi,bo 长期不等于0,表示内存不足。
vmstat -a:显示活跃和非活跃内存
[root@localhost ~]# 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 0 1016976 121900 1388660 0 0 54 19 173 477 12 3 85 0 0 [root@localhost ~]# vmstat -a procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 0 0 0 1015720 701804 1447844 0 0 54 19 173 477 12 3 85 0 0
使用-a选项显示活跃和非活跃内存时,所显示的内容除增加inact和active外,其他显示内容与vmstat的输出结果相同。
1 | [root@localhost ~]# vmstat -a 2 4 |
vmstat -d:查看磁盘的读/写
1 | [root@localhost ~]# vmstat -d |
说明:这些信息主要来自于/proc/diskstats.merged:表示一次来自于合并的写/读请求,一般系统会把多个连接/邻近的读/写请求合并到一起来操作.
vmstat -f:查看系统已经fork了多少次
1 | [root@localhost ~]# vmstat -f |
vmstat -s:查看内存使用的详细信息
1 | [root@localhost ~]# vmstat -s |
vmstat -m:获取
slab
由于内核会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry,这些对象如果每次构建的时候就向内存要一个页(4kb),而其实只有几个字节,这样就会非常浪费,为了解决这个问题,就引入了一种新的机制来处理在同一个页框中如何分配小存储区,而slab可以对小对象进行分配,这样就不用为每一个对象分配页框,从而节省了空间,内核对一些小对象创建析构很频繁,slab对这些小对象进行缓冲,可以重复利用,减少内存分配次数。1
2
3[root@localhost ~]# vmstat -m
vmstat: your kernel does not support slabinfo or your permissions are insufficient
[root@localhost ~]#
翻译:vmstat:您的内核不支持slabinfo或您的权限不足
vmstat -w宽版输出
1 | [root@localhost ~]# vmstat -w |
vmstat -t显示时间
1 | [root@localhost ~]# vmstat -t |
vmstat -wt宽版输出并显示时间
1 | [root@localhost ~]# vmstat -wt |
vmstat 秒数
每3秒输出一条结果vmstat 3
1
2
3
4
5
6
7
8
9
10
11
12[root@localhost ~]# 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 1021912 117064 1387020 0 0 57 19 177 483 12 3 85 0 0
0 0 0 1025868 117128 1386988 0 0 0 197 631 2179 14 3 83 1 0
1 0 0 1025964 117152 1387008 0 0 0 99 468 1978 14 2 84 0 0
0 0 0 1025880 117152 1387032 0 0 0 0 669 2216 14 2 84 0 0
3 0 0 1025756 117176 1387012 0 0 0 76 432 1661 13 1 86 0 0
3 0 0 1025756 117176 1387028 0 0 0 20 468 1844 14 2 83 0 0
1 0 0 1025492 117220 1387004 0 0 0 153 598 2191 12 3 85 0 0
^C
[root@localhost ~]#
vmstat 间隔秒数 采集次数
每隔3秒采集一次,共采集4次:vmstat 3 4
1
2
3
4
5
6
7
8[root@localhost ~]# vmstat 3 4
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 1011904 119464 1388380 0 0 55 19 175 479 12 3 85 0 0
0 0 0 1011764 119468 1388380 0 0 0 25 371 1729 14 1 85 0 0
0 2 0 1011640 119520 1388356 0 0 0 176 716 2481 13 3 83 0 0
2 0 0 1011328 119524 1388380 0 0 0 24 631 2129 7 1 92 0 0
[root@localhost ~]#
参考资料
http://www.ha97.com/4512.html
https://wangchujiang.com/linux-command/c/vmstat.html
https://www.yiibai.com/linux/vmstat.html
https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html
https://segmentfault.com/a/1190000018834649
http://c.biancheng.net/view/1081.html
https://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html