vmstat
vmstat
(虚拟内存统计,Virtual Memory Statistics)是 Linux 和类 Unix 系统中的一个常用命令,用于报告系统的内存、进程、虚拟内存、磁盘 I/O、上下文切换等信息。
它能帮助系统管理员和开发人员监控系统的资源使用情况,分析性能瓶颈。
实际测试
1 次效果
$ 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 15063592 2616 302328 0 0 33 9 11 48 0 0 99 0 0
2s 刷新一次,采样 5 次
$ vmstat 2 5
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 15061208 2616 302412 0 0 31 8 11 47 0 0 99 0 0
0 0 0 15060708 2616 302412 0 0 0 0 60 531 0 0 100 0 0
0 0 0 15062192 2616 302412 0 0 0 0 76 542 0 0 100 0 0
0 0 0 15061940 2616 302412 0 0 0 0 63 535 0 0 100 0 0
0 0 0 15062192 2616 302412 0 0 0 0 59 531 0 0 100 0 0
基本语法
vmstat [options] [delay [count]]
-
delay
:指定采样的间隔时间(单位是秒)。 -
count
:指定采样的次数。
如果没有指定 delay
和 count
,vmstat
会仅输出一次统计信息。
常用选项
-s
:显示系统的累计统计信息(如内存总量、交换空间总量等)。-d
:显示磁盘的统计信息。-p
:显示指定设备的统计信息。-t
:显示时间戳。-f
:显示页错误统计信息。-m
:显示内存页缓存的统计信息。
输出格式
vmstat
的输出分为两个部分:第一部分是头部,显示列名;第二部分是数据,按时间间隔采样并显示相关统计。
默认的输出格式如下:
procs memory swap io system cpu
r b swpd free buff cache si so bi bo in cs us sy id wa st
各列的含义:
- procs(进程):
r
:正在运行的进程数。b
:处于等待I/O的进程数。
- memory(内存):
swpd
:已使用的交换空间(swap space)大小(KB)。free
:空闲内存大小(KB)。buff
:用于缓冲的内存大小(KB),例如文件系统缓存。cache
:用于页面缓存的内存大小(KB)。
- swap(交换空间):
si
:从磁盘交换到内存的数据量(KB/s)。so
:从内存交换到磁盘的数据量(KB/s)。
- io(I/O):
bi
:从块设备读入的数据量(KB/s)。bo
:写入到块设备的数据量(KB/s)。
- system(系统):
in
:每秒中断次数。cs
:每秒上下文切换次数。
- cpu(CPU 使用情况):
us
:用户态 CPU 时间百分比(不包括内核态)。sy
:内核态 CPU 时间百分比。id
:空闲的 CPU 时间百分比。wa
:等待 I/O 的 CPU 时间百分比。st
:被虚拟机偷取的 CPU 时间百分比(如果系统运行虚拟机)。
如何解读 vmstat
输出
-
内存:
free
和swpd
关键字用于检测系统是否出现内存瓶颈。swpd
不为零,表示系统正在使用交换空间,通常意味着物理内存不足。 -
CPU 使用情况:如果
us
(用户态)和sy
(内核态)的总和较大,说明 CPU 负载较高。如果wa
(等待 I/O)很高,可能是 I/O 瓶颈导致 CPU 空闲。 -
磁盘 I/O:
bi
和bo
可以帮助你监控磁盘读写情况。如果这些值很高,可能是磁盘成为瓶颈的信号。
总结
vmstat
是一个非常有用的工具,可以帮助你实时监控系统资源,找出可能的性能瓶颈。
通过合理配置延迟和次数,你可以更好地理解系统的负载和状态,进而对症下药进行优化。
小结
希望本文对你有所帮助,如果喜欢,欢迎点赞收藏转发一波。
我是老马,期待与你的下次相遇。