文章目录
- [Linux `vmstat` 命令详解](#Linux 
vmstat命令详解) - 简介
 - [如何安装 `vmstat`](#如何安装 
vmstat) - 命令格式
 - 参数详解
 - [`vmstat` 输出信息详解](#
vmstat输出信息详解) - 常用示例
 - 总结
 
Linux vmstat 命令详解
简介
vmstat(Virtual Memory Statistics)是 Linux 系统中的一个监控工具,用于报告系统的虚拟内存、进程、CPU 活动等信息。它能帮助用户了解系统的整体性能状况,尤其是内存和 CPU 的使用情况。通过 vmstat,可以轻松检测出系统瓶颈,如内存不足、CPU 负载过重等问题。
如何安装 vmstat
在大多数 Linux 发行版中,vmstat 通常包含在 procps 或 procps-ng 软件包中。如果未安装,可以使用以下命令进行安装:
- 
Debian/Ubuntu 系统:
bashsudo apt-get install procps - 
CentOS/RedHat 系统:
bashsudo yum install procps-ng 
安装完成后,可以通过在终端输入 vmstat 来确认是否成功安装。
命令格式
            
            
              bash
              
              
            
          
          vmstat [选项] [延迟时间] [重复次数]
        - 延迟时间:间隔几秒钟显示一次统计信息。
 - 重复次数:显示信息的次数。
 
参数详解
| 参数 | 说明 | 
|---|---|
-a | 
显示活跃和非活跃内存信息。 | 
-f | 
显示自系统启动以来创建的进程数量。 | 
-m | 
显示 slab 内存信息。 | 
-n | 
只在第一次报告时显示头信息。 | 
-s | 
以摘要形式显示内存统计信息。 | 
-d | 
显示磁盘的统计信息。 | 
-p [设备] | 
显示指定磁盘设备的统计信息。 | 
-t | 
显示输出的时间戳。 | 
-S [单位] | 
设置内存单位为 K、M、G。 | 
vmstat 输出信息详解
执行 vmstat 命令后,系统会输出一组统计信息,包括以下字段:
| 列名 | 说明 | 
|---|---|
procs | 
包含进程的状态信息。 | 
r | 
可运行的进程数(等待 CPU 的进程数)。 | 
b | 
等待资源(如 I/O 操作)的进程数。 | 
memory | 
包含内存使用情况。 | 
swpd | 
使用的虚拟内存大小(单位:KB)。 | 
free | 
空闲内存大小(单位:KB)。 | 
buff | 
缓存用作缓冲区的内存大小(单位:KB)。 | 
cache | 
用作缓存的内存大小(单位:KB)。 | 
swap | 
交换区使用情况。 | 
si | 
从交换区读入内存的数据量(单位:KB/s)。 | 
so | 
从内存写入交换区的数据量(单位:KB/s)。 | 
io | 
I/O 设备使用情况。 | 
bi | 
从块设备读入的数据量(单位:块/s)。 | 
bo | 
写入块设备的数据量(单位:块/s)。 | 
system | 
系统活动信息。 | 
in | 
每秒中断数。 | 
cs | 
每秒上下文切换数。 | 
cpu | 
CPU 使用率。 | 
us | 
用户进程占用 CPU 的时间百分比。 | 
sy | 
系统进程占用 CPU 的时间百分比。 | 
id | 
CPU 空闲时间百分比。 | 
wa | 
I/O 等待时间百分比。 | 
st | 
虚拟机占用的 CPU 时间百分比。 | 
常用示例
简单使用
只执行一次 vmstat:
            
            
              bash
              
              
            
          
          vmstat
        输出类似于:
这是对 vmstat 命令输出及其各个字段的详细说明。以下是对您提供的输出进行解析并补充解释。
            
            
              bash
              
              
            
          
          [root@sonar ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1601524   2996 13172096    0    0     0     2    1    1  1  0 99  0  0
[root@sonar ~]#
        字段说明:
1. Procs(进程状态):
- r: 正在运行并等待 CPU 时间的进程数量。数值越大,说明 CPU 负载越重。当前输出为 1,表示有一个进程在等待 CPU 资源。
 - b: 正在等待 I/O 的进程数量。这里是 0,表示没有进程在等待 I/O 操作完成。
 
2. Memory(内存):
- swpd: 使用的虚拟内存大小(单位:KB)。这里为 0,表示没有使用交换区。
 - free: 空闲的物理内存大小(单位:KB)。当前空闲内存为 1601524 KB(约 1.6 GB)。
 - buff: 用作缓冲区的内存大小(单位:KB),通常用于文件系统的读写缓冲。当前缓冲内存为 2996 KB。
 - cache: 用作缓存的内存大小(单位:KB),用于缓存经常访问的数据以加快访问速度。当前缓存为 13172096 KB(约 13 GB),表示系统有较多内存被用于缓存。
 
3. Swap(交换区):
- si: 每秒从交换区写入内存的大小(单位:KB/s)。当前为 0,表示没有发生交换区读取操作。
 - so: 每秒从内存写入交换区的大小(单位:KB/s)。当前为 0,表示没有发生交换区写入操作。
 
4. IO(磁盘 I/O):
- bi: 每秒读取的块数。当前为 0,表示没有读操作。
 - bo: 每秒写入的块数。当前为 2,表示每秒有少量写操作(2 个块的写入量)。
 
5. System(系统活动):
- in: 每秒中断数,包括时钟中断。当前为 1,表示每秒发生 1 次中断。
 - cs: 每秒上下文切换次数。当前为 1,表示每秒发生 1 次上下文切换。
 
6. CPU(CPU 使用情况,以百分比表示):
- us: 用户态 CPU 时间百分比(用户进程执行时间)。当前为 1%,表示 CPU 的 1% 时间用于用户进程。
 - sy: 内核态 CPU 时间百分比(系统进程执行时间)。当前为 0%,表示 CPU 几乎没有用于内核进程。
 - id: 空闲时间百分比。当前为 99%,表示 CPU 的大部分时间处于空闲状态。
 - wa: I/O 等待时间百分比。当前为 0%,表示 CPU 几乎没有等待 I/O 操作。
 - st: 虚拟机管理程序偷取的 CPU 时间百分比。当前为 0,表示没有虚拟化环境中的 CPU 资源被虚拟机管理程序占用。
 
定时监控系统性能
每 2 秒刷新一次,重复 5 次:
            
            
              bash
              
              
            
          
          vmstat 2 5
        查看内存统计摘要
使用 -s 参数获取系统内存的统计摘要:
            
            
              bash
              
              
            
          
          vmstat -s
        查看磁盘统计信息
使用 -d 参数查看磁盘的 I/O 活动:
            
            
              bash
              
              
            
          
          vmstat -d
        带时间戳输出
使用 -t 参数在每次输出时添加时间戳:
            
            
              bash
              
              
            
          
          vmstat -t
        总结
vmstat 是一个强大的系统性能监控工具,尤其适用于监控虚拟内存、CPU 负载和 I/O 活动。在日常运维和系统调优过程中,vmstat 可以提供实时的系统运行状态,让管理员能够快速定位性能瓶颈。通过结合不同的选项,用户可以灵活地获取所需的系统信息。