Linux `vmstat` 命令详解

文章目录


Linux vmstat 命令详解

简介

vmstat(Virtual Memory Statistics)是 Linux 系统中的一个监控工具,用于报告系统的虚拟内存、进程、CPU 活动等信息。它能帮助用户了解系统的整体性能状况,尤其是内存和 CPU 的使用情况。通过 vmstat,可以轻松检测出系统瓶颈,如内存不足、CPU 负载过重等问题。

如何安装 vmstat

在大多数 Linux 发行版中,vmstat 通常包含在 procpsprocps-ng 软件包中。如果未安装,可以使用以下命令进行安装:

  • Debian/Ubuntu 系统:

    bash 复制代码
    sudo apt-get install procps
  • CentOS/RedHat 系统:

    bash 复制代码
    sudo 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 可以提供实时的系统运行状态,让管理员能够快速定位性能瓶颈。通过结合不同的选项,用户可以灵活地获取所需的系统信息。

相关推荐
Aileen_0v03 分钟前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
州周37 分钟前
Ftp目录整个下载
linux·服务器·数据库
Jackey_Song_Odd38 分钟前
Ubuntu 24.04.1 解决部分中文字符(门、径)显示错误的问题
linux·ubuntu
kaixin_learn_qt_ing1 小时前
Linux export命令
linux
余额不足121381 小时前
C语言基础十六:枚举、c语言中文件的读写操作
linux·c语言·算法
冷曦_sole1 小时前
linux-19 根文件系统(一)
linux·运维·服务器
AI大模型学徒1 小时前
Linux(二)_清理空间
linux·运维·服务器
花鱼白羊1 小时前
TCP Vegas拥塞控制算法——baseRtt 和 minRtt的区别
服务器·网络协议·tcp/ip
云川之下1 小时前
【linux】 unshare -user -r /bin/bash命令详解
linux·bash·unshare
tntlbb1 小时前
Ubuntu20.4 VPN+Docker代理配置
运维·ubuntu·docker·容器