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