目录
一、vmstat简介
vmstat 是 Linux 系统中一个非常有用的命令,它用于报告虚拟内存统计信息。这个命令提供了关于内核进程、进程、中断、系统调用等的详细信息,是系统监控和故障排除的重要工具之一。
二、基本用法
(一)基本语法
vmstat 的语法如下:
vmstat [options] [interval [count]]
- `options` 可以选择的参数,影响命令的输出和行为。
- `interval` 指定两次数据收集之间的时间间隔,单位是秒。
- `count` 指定数据收集的次数。
(二)常用选项
vmstat命令的常用选项如下;
`-f` 输出1秒内的平均值。
`-s` 输出汇总信息。
`-d` 输出磁盘IO统计信息。
`-p` 输出每个进程的虚拟内存统计信息。
`-n` 指定列出的字段数。
`-t` 在输出中包含时间戳。
`-T` 以毫秒为单位显示时间戳。
三、典型实例
1. 报告虚拟内存统计信息,每秒一次,共收集5次:
vmstat 1 5
实际操作效果如下:
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# vmstat 1 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 127416 161968 1874232 0 0 10 42 0 1 2 5 92 0 0
0 0 0 128392 161956 1874036 0 0 0 32 14067 28036 0 2 98 0 0
1 0 0 126148 161972 1874792 0 0 0 356 19122 33387 5 12 82 0 0
0 0 0 126288 161992 1874776 0 0 0 200 14097 28234 1 2 97 0 0
0 0 0 125892 162008 1874800 0 0 0 104 18141 32499 5 9 86 0 0
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#
2. 报告虚拟内存统计信息,并且以逗号分隔的格式输出,适合于管道传输到其他命令:
vmstat -s
实际操作效果如下:
[root@ecs-52a1 home]#
[root@ecs-52a1 home]# vmstat -s
7953708 K total memory
5791288 K used memory
6126176 K active memory
1408068 K inactive memory
123964 K free memory
162136 K buffer memory
1876320 K swap cache
0 K total swap
0 K used swap
0 K free swap
82127230 non-nice user cpu ticks
14846 nice user cpu ticks
148396664 system cpu ticks
3081549786 idle cpu ticks
2238361 IO-wait cpu ticks
25732380 IRQ cpu ticks
5095330 softirq cpu ticks
0 stolen cpu ticks
326150807 pages paged in
1410461793 pages paged out
0 pages swapped in
0 pages swapped out
1341362713 interrupts
2662073347 CPU context switches
1705987596 boot time
2496892639 forks
[root@ecs-52a1 home]#
3. 实时监控虚拟内存统计信息,直到用户按下任意键:
vmstat -s infinite
注意:这个命令主要用在unix系统,其他系统不一定支持。
四、输出字段
(一)输出的主要字段介绍
vmstat 的输出包括多个字段,这些字段提供了关于系统虚拟内存使用情况的详细信息。主要的字段包括:
`procs` 进程相关的信息,包括正在运行、睡眠和僵尸进程的数量。
`memory` 内存使用情况,包括活跃和空闲内存的数量。
`swap` 交换空间的使用情况。
`io` 磁盘IO信息,包括读写请求的数量和延迟。
`system` 系统调用和中断的信息。
`cpu` CPU的使用情况,包括用户时间、系统时间和等待时间。
(二)实例介绍
1、输出实例
要求:每20秒收集一次系统虚拟内存统计信息,共收集3次。
可以在linux命令行输入如下命令:
vmstat 20 3
输出结果如下所示:
2、字段的详细解释
(1) `procs`: 进程相关的信息
- `r`: 正在运行或等待CPU的进程数。
- `b`: 处于阻塞状态等待资源的进程数。
(2)`memory`: 内存使用情况
- `swpd`: 使用的虚拟内存大小(KB)。
- `free`: 空闲的物理内存大小(KB)。
- `buff`: 作为缓冲区使用的内存大小(KB)。
- `cache`: 作为缓存使用的内存大小(KB)。
(3)`swap`: 交换空间使用情况
- 本例中没有使用交换空间,所以都是0。
(4) `io`: 磁盘I/O信息
- `si`: 向磁盘写入的数据量(KB/秒)。
- `so`: 从磁盘读取的数据量(KB/秒)。
- `bi`: 磁盘写入请求次数。
- `bo`: 磁盘读取请求次数。
(5)`system`: 系统调用和中断信息
- `in`: 每秒产生的中断次数。
- `cs`: 每秒处理的系统调用次数。
(6) `cpu`: CPU的使用情况
- `us`: CPU处于用户模式的时间百分比。
- `sy`: CPU处于系统模式的时间百分比。
- `id`: CPU空闲时间百分比。
- `wa`: CPU在等待I/O完成的时间百分比。
- `st`: CPU在 stolen 模式(被其他操作系统偷取的时间)百分比。
3、输出数据的详细解释
每一行代表一个时间点的统计信息。现在来分析每一行的具体数据:
(1). 第一行(采样1)
- 没有进程正在运行或等待CPU(`r=0`,`b=0`)。
- 使用的虚拟内存为0(`swpd=0`),空闲内存为121,720KB(`free=121720`),缓冲区和缓存大小分别为16,5108KB(`buff=165108`)和190,4304KB(`cache=1904304`)。
- 没有磁盘I/O活动(`si=0`,`so=0`),但有一次写入请求(`bi=10`)和42次读取请求(`bo=42`)。
- 系统中断和系统调用次数都很低。
- CPU使用情况:2%用户模式,5%系统模式,92%空闲,0%等待I/O,0%被偷取。
(2). 第二行(采样2)
- 进程状态与第一行相同。
- 虚拟内存使用量略有增加,达到134,168KB(`swpd=0`),空闲内存减少到134,168KB(`free=134168`),缓冲区和缓存大小不变。
- 有轻微的磁盘读取活动,读取请求为352次(`bi=4`),写入请求为0次(`bo=0`)。
- CPU使用情况:3%用户模式,6%系统模式,91%空闲,0%等待I/O,0%被偷取。
(3). 第三行(采样3)
- 进程状态与前两行相同。
- 虚拟内存使用量继续减少到126,536KB(`swpd=0`),空闲内存进一步减少到126,536KB(`free=126536`),缓冲区和缓存大小不变。
- 磁盘I/O活动有所增加,读取请求为132次(`bi=0`),写入请求为0次(`bo=0`)。
- CPU使用情况:11%用户模式,6%系统模式,82%空闲,0%等待I/O,0%被偷取。
从这些数据中,我们可以看出系统的虚拟内存使用情况在采样期间有所波动,但总体上变化不大。磁盘I/O活动在前两次采样中很少,但在第三次采样中有所增加。CPU的使用率很低,大部分时间都处于空闲状态。这可能意味着系统在采样期间没有进行太多的计算任务,或者系统负载较轻。
需要注意的是,vmstat
命令的输出可以根据系统的不同而有所变化,而且应该结合系统的实际运行情况来解读这些统计数据。在某些情况下,虚拟内存的使用情况和CPU的使用情况可能需要特别关注,因为它们直接影响到系统的性能。
五、其他
vmstat 是一个在系统监控和性能分析中非常实用的工具,通过它可以获得系统运行的许多关键指标。在分析 vmstat 的输出时,应该关注内存和交换空间的使用情况,以及CPU的使用情况,这些信息可以帮助诊断系统性能问题。
vmstat 不会对磁盘IO活动产生任何影响,因为它只是报告现有的统计信息。
vmstat 提供的信息非常丰富,对于系统管理员来说,解读这些信息可能需要一定的系统知识。能够帮助管理员保持系统的良好运行状态。
文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。