简介
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
:磁盘使用率
分析步骤
- 观察
bi
和bo
的值。如果bi
或bo
的值很高,则可能存在磁盘I/O瓶颈。 - 观察
in
和out
的值。如果in
或out
的值很大,则可能存在大量数据读写操作。 - 观察
errs
的值。如果errs
的值不为0,则可能存在磁盘故障。 - 观察
%used
的值。如果%used
的值接近100%,则可能存在磁盘空间不足问题。
案例4:监控系统整体性能
vmstat 2 100 > vmstat.out
该命令将每隔2秒采集一次系统性能信息,并保存到名为vmstat.out
的文件中,持续100次。
分析步骤
- 使用文本编辑器打开
vmstat.out
文件。 - 观察CPU使用率(
%cpu
)的变化趋势。如果CPU使用率长期处于较高水平,则可能存在性能瓶颈。 - 观察内存使用率(
%mem
)的变化趋势。如果内存使用率接近100%,则可能需要增加内存容量或优化内存使用。 - 观察虚拟内存交换率(
si
和so
)的变化趋势。如果虚拟内存交换率较高,则可能存在内存不足问题。 - 观察磁盘I/O活动(
bi
和bo
)的变化趋势。如果磁盘I/O活动较高,则可能存在磁盘瓶颈。
案例5:监控特定进程的资源使用情况
vmstat -p PID 2 10 > process_stats.out
该命令将每隔2秒采集一次进程ID为PID
的进程的资源使用情况信息,并保存到名为process_stats.out
的文件中,持续10次。
分析步骤
- 使用文本编辑器打开
process_stats.out
文件。 - 观察CPU使用率(
%cpu
)的变化趋势。 - 观察内存使用率(
%mem
)的变化趋势。 - 观察虚拟内存交换率(
si
和so
)的变化趋势。 - 观察磁盘I/O活动(
bi
和bo
)的变化趋势。
总结
vmstat
命令是一个功能强大的性能监控工具,可以用于分析各种系统性能问题。通过合理使用vmstat
命令,可以有效地监控系统资源