简介

vmstat命令是Linux/Unix系统中最常用的性能监控工具之一,用于显示虚拟内存的状态信息。它可以报告有关进程、内存、I/O等系统整体运行状态的统计信息,包括CPU使用率、内存使用情况、虚拟内存交换情况、磁盘I/O活动等。

用法

vmstat [选项] [间隔] [次数]
  • 选项:指定要显示的统计信息类型
  • 间隔:指定两次统计信息之间的间隔时间,单位为秒
  • 次数:指定要显示统计信息的次数,如果省略则一直显示直到按Ctrl+C键退出

常用选项

  • -a:显示活动页面的信息
  • -f:显示进程总数
  • -m:显示slab分配信息
  • -n:只显示一次表头信息
  • -s:以简短的格式显示统计信息
  • -d:显示磁盘设备统计信息
  • -p:显示指定分区或设备的统计信息
  • -S:指定输出信息的单位

使用案例

案例1:查看CPU使用率

vmstat 1 10

该命令将每秒显示一次CPU使用率信息,持续10秒。输出结果类似如下:

procs   r  b   x   s   d   sw    %cpu   %mem    swap   sin   sout  cmd
  2     0   0   0   0   0   0  10.0 us  100.0%   0.0  4567   890   [kernel]
  2     0   0   0   0   0   0   10.0 sy  100.0%   0.0  4567   890   [kswapd]
  2     0   0   0   0   0   0   10.0 id  100.0%   0.0  4567   890   [init]

在输出结果中,%cpu列表示CPU使用率,包括用户进程(us)、系统进程(sy)和空闲CPU时间(id)。

案例2:查看内存使用情况

vmstat -m 1 10

该命令将每秒显示一次内存使用情况信息,持续10秒。输出结果类似如下:

procs   r  b   x   s   d   sw    %cpu   %mem    swap   sin   sout  cmd
  2     0   0   0   0   0   0  10.0 us  100.0%   0.0  4567   890   [kernel]
  2     0   0   0   0   0   0   10.0 sy  100.0%   0.0  4567   890   [kswapd]
  2     0   0   0   0   0   0   10.0 id  100.0%   0.0  4567   890   [init]
m       total   free   used   shared   buffers   cached   memfree   slab   sreciprocal
 1024000   973124   50876    0     0     32768   491520     0      16

在输出结果中,%mem列表示内存使用率,包括已使用的内存(used)、空闲内存(free)和缓存内存(cached)。

vmstat命令使用案例(完整版)

案例3:查看磁盘I/O活动

vmstat -d 1 10

该命令将每秒显示一次磁盘I/O活动信息,持续10秒。输出结果类似如下:

procs   r  b   x   s   d   sw    %cpu   %mem    swap   sin   sout  cmd
  2     0   0   0   0   0   0  10.0 us  100.0%   0.0  4567   890   [kernel]
  2     0   0   0   0   0   0   10.0 sy  100.0%   0.0  4567   890   [kswapd]
  2     0   0   0   0   0   0   10.0 id  100.0%   0.0  4567   890   [init]
disk    bi    bo   in    out   errs   tot   time    %used
sda     100    50   4000  2000    0  6000  10.00  50.0%
sda1     10    0   400   0    0   400  10.00  10.0%

在输出结果中,以下列表示磁盘I/O活动信息:

  • bi:每秒从磁盘读取的块数
  • bo:每秒写入磁盘的块数
  • in:每秒从磁盘读取的数据量(单位为字节)
  • out:每秒写入磁盘的数据量(单位为字节)
  • errs:每秒发生的磁盘错误次数
  • tot:总共读写的数据量(单位为块数)
  • time:采样时间(单位为秒)
  • %used:磁盘使用率

分析步骤

  1. 观察bibo的值。如果bibo的值很高,则可能存在磁盘I/O瓶颈。
  2. 观察inout的值。如果inout的值很大,则可能存在大量数据读写操作。
  3. 观察errs的值。如果errs的值不为0,则可能存在磁盘故障。
  4. 观察%used的值。如果%used的值接近100%,则可能存在磁盘空间不足问题。

案例4:监控系统整体性能

vmstat 2 100 > vmstat.out

该命令将每隔2秒采集一次系统性能信息,并保存到名为vmstat.out的文件中,持续100次。

分析步骤

  1. 使用文本编辑器打开vmstat.out文件。
  2. 观察CPU使用率(%cpu)的变化趋势。如果CPU使用率长期处于较高水平,则可能存在性能瓶颈。
  3. 观察内存使用率(%mem)的变化趋势。如果内存使用率接近100%,则可能需要增加内存容量或优化内存使用。
  4. 观察虚拟内存交换率(siso)的变化趋势。如果虚拟内存交换率较高,则可能存在内存不足问题。
  5. 观察磁盘I/O活动(bibo)的变化趋势。如果磁盘I/O活动较高,则可能存在磁盘瓶颈。

案例5:监控特定进程的资源使用情况

vmstat -p PID 2 10 > process_stats.out

该命令将每隔2秒采集一次进程ID为PID的进程的资源使用情况信息,并保存到名为process_stats.out的文件中,持续10次。

分析步骤

  1. 使用文本编辑器打开process_stats.out文件。
  2. 观察CPU使用率(%cpu)的变化趋势。
  3. 观察内存使用率(%mem)的变化趋势。
  4. 观察虚拟内存交换率(siso)的变化趋势。
  5. 观察磁盘I/O活动(bibo)的变化趋势。

总结

vmstat命令是一个功能强大的性能监控工具,可以用于分析各种系统性能问题。通过合理使用vmstat命令,可以有效地监控系统资源