vmstat 是一个用于监控 Linux 系统虚拟内存使用情况的命令。它可以提供实时的 CPU、内存、I/O、进程等系统性能数据,帮助用户进行系统调优和故障排查。
vmstat 命令的用法如下:
vmstat [options] [delay] [count]
其中,options 为命令选项,delay 为采样时间间隔(单位为秒),count 为采样次数。
常用的选项包括:
- -a:显示所有信息,包括内存、进程、CPU、磁盘和交换区等。
- -s:以摘要形式显示系统统计信息。
- -d:显示磁盘 I/O 统计信息。
- -p:显示进程信息。
例如,使用 vmstat 命令以 5 秒间隔,连续采样 10 次的命令为:
vmstat 5 10
执行上述命令后,会输出类似下面的结果:
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 103268 3892 157320 0 0 0 1 2 4 0 0 100 0 0
0 0 0 103268 3892 157320 0 0 0 0 2 2 0 0 100 0 0
0 0 0 103268 3892 157320 0 0 0 0 2 2 0 0 100 0 0
0 0 0 103268 3892 157320 0 0 0 0 2 2 0 0 100 0 0
0 0 0 103268 3892 157320 0 0 0 0 2 2 0 0 100 0 0
0 0 0 103268 3892 157320 0 0 0 0 2 2 0 0 100 0 0
0 0 0 103268 3892 157320 0 0 0 0 2 2 0 0 100 0 0
0 0 0 103268 3892 157320 0 0 0 0 2 2 0 0 100 0 0
0 0 0 103268 3892 157320 0 0 0 0 2 2 0 0 100 0 0
0 0 0 103268 3892 157320 0 0 0 0 2 2 0 0 100 0 0
输出结果中的各列含义如下:
- procs:进程统计信息,包括正在运行和等待执行的进程数量。
- memory:内存统计信息,包括空闲、缓存和使用中的内存量。
- swap:交换区统计信息,包括空闲和使用中的交换区大小。
- io:磁盘 I/O 统计信息,包括块输入输出和交换区输入输出。
- system:系统统计信息,包括中断和上下文切换次数。
- cpu:CPU 统计信息,包括用户、系统和空闲 CPU 时间占比。
通过分析 vmstat 命令输出结果,可以了解系统的性能瓶颈,从而进行优化和调整。
这些是 vmstat 命令输出结果中的各列含义,具体解释如下:
- r:等待运行的进程数,也就是正在运行和等待执行的进程数量。
- b:处于不可中断状态的进程数,也就是因为等待某些资源而无法被中断的进程数量。
- swpd:交换区使用大小,即已被交换到硬盘的内存大小。
- free:空闲内存大小,即未被占用的内存大小。
- buff:用作缓存的内存大小,即正在被系统用来缓存文件系统的内存大小。
- cache:用作缓存的内存大小,即正在被系统用来缓存文件系统和应用程序的内存大小。
- si:每秒从磁盘交换区读入的块数。
- so:每秒写入磁盘交换区的块数。
- bi:每秒从磁盘读入的块数。
- bo:每秒写入磁盘的块数。
- in:每秒中断数,包括时钟中断、网络中断等。
- cs:每秒上下文切换次数,也就是每秒进程切换的次数。
- us:用户空间进程占用 CPU 时间百分比。
- sy:系统空间进程占用 CPU 时间百分比。
- id:CPU 空闲时间百分比。
- wa:等待 I/O 的 CPU 时间百分比。
- st:被虚拟机偷走的 CPU 时间百分比,只有在虚拟化环境下才有这个值。
可以通过分析这些参数,了解系统的运行状态和性能瓶颈,从而进行优化和调整。