vmstat命令
1、概要
- Virtual Meomory Statistics,报告虚拟内存统计信息
- 会统计进程信息、内存、交换区、IO、磁盘、CPU 等数据
2、vmstat主要能看什么性能指标
- 均是 Linux 系统级别
- 运行状态、不可中断睡眠状态的进程数量
- 内存、交换区、I/O、CPU 信息
- 上下文切换次数、中断次数
- 磁盘 I/O 的详细信息和概要信息
3、语法格式
vmstat [options] [delay [count]]
options:命令行参数,可选 delay:间隔多久统计一次数据,可选 count:统计一次,可选 注意:若只传了 delay,则统计次数是无限次,结束统计后会打印本次所有数据的平均值
命令行参数
-a:显示活跃和非活跃内存 -f:显示从系统启动至今的fork数量 。 -m:显示slabinfo -n:只在开始时显示一次各字段名称。 -s:显示内存相关统计信息及多种系统活动数量。 delay:刷新时间间隔。如果不指定,只显示一条结果。 count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。 -d:显示磁盘相关统计信息。
-D:获取磁盘的一些摘要信息 -p:显示指定磁盘分区统计信息 -S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-t:加一列显示当前时间 -V:显示vmstat版本信息。
-h:帮助文档
4、使用 vmstat 查看系统纬度的 CPU 负载:
使用vmstat查看系统维度的CPU负载
使用top查看进程维度的CPU负载
回显说明:
- r: 表示系统中 CPU 等待处理的线程。由于 CPU 每次只能处理一个线程,所以,该数值越大,通常表示系统运行越慢,当这个值超过了CPU数目,就会出现CPU瓶颈了
- us:用户模式消耗的 CPU 时间百分比。该值较高时,说明用户进程消耗的 CPU 时间比较多,比如,如果该值长期超过 50%,则需要对程序算法或代码等进行优化。
- sy:内核模式消耗的 CPU 时间百分比。
- wa:IO 等待消耗的 CPU 时间百分比。该值较高时,说明 IO 等待比较严重,这可能磁盘大量作随机访问造成的,也可能是磁盘性能出现了瓶颈。
- id:处于空闲状态的 CPU 时间百分比。如果该值持续为 0,同时 sy 是 us 的两倍,则通常说明系统则面临着 CPU 资源的短缺。
5、统计数据的字段说明
类别 |
项目 |
含义 |
说明 |
Procs |
r |
等待执行的线程数量 |
展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了 |
|
b |
处于不可中断睡眠状态的进程数量 |
|
Memory |
swpd |
正在使用的swap大小单位K |
|
|
free |
空闲的内存空间 |
|
|
buff |
已使用的buff大小,对块设备的读写进行缓冲 |
|
|
cache |
已使用的cache大小,文件系统的cache |
|
|
inact |
非活跃内存大小(当使用-a选项时显示) |
|
|
active |
活跃的内存大小(当使用-a选项时显示) |
|
Swap |
si |
交换内存使用,由磁盘调入内存 |
|
|
so |
交换内存使用,由内存调入磁盘 |
|
IO |
bi |
从块设备读入的数据总量(读磁盘) (KB/s), |
|
|
bo |
写入到块设备的数据总理(写磁盘) (KB/s) |
如果这个值长期不为0,说明内存可能有问题,因为没有使用到缓存(当然,不排除直接I/O的情况,但是一般很少有直接I/O的) |
System |
in |
每秒产生的中断次数 |
包括时钟中断,需要关注,这两个值越大,内核消耗CPU会越大 |
|
cs |
每秒产生的上下文切换次数 |
上面这2个值越大,会看到由内核消耗的CPU时间会越多 |
CPU |
us |
用户进程消耗的CPU时间百分比 |
us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了 |
|
sy |
内核进程消耗的CPU时间百分比 |
sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。 |
|
id |
空闲 |
处于空闲状态的 CPU 时间百分比。如果该值持续为 0,同时 sy 是 us 的两倍,则通常说明系统则面临着 CPU 资源的短缺。 |
|
wa |
IO等待消耗的CPU时间百分比 |
wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。 |
6、数据来源说明
主要来自如下文件:
/proc/meminfo
/proc/stat
/proc/*/stat
1)这些信息主要来自 /proc/stat
2)这些信息的分别来自于 /proc/meminfo 、 /proc/stat 和 /proc/vmstat
3)这些信息主要来自于 /proc/diskstats
这些信息的分别来自于 、 和
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性