Linux 中 vmstat 和 iostat 命令详解

在 Linux 系统中,vmstat 和 iostat 都是用于系统性能监控的重要工具,下面为你详细介绍这两个命令。

vmstat 命令

vmstat(Virtual Memory Statistics)命令可用于监控系统的虚拟内存、进程、CPU 活动等状态信息,帮助用户了解系统的整体性能状况。

基本语法

vmstat [选项] [刷新间隔 [刷新次数]]

常用选项

  • -a:显示活跃和非活跃内存。
  • -f:显示从系统启动至今的 fork 数量。
  • -m:显示 slab 信息。
  • -n:只在开始时显示一次各字段名称。
  • -s:以表格形式显示内存相关的统计信息和多种系统活动数量。
  • -d:显示磁盘相关统计信息。
  • -p:用于显示指定磁盘分区的统计信息。
  • -S:指定输出的单位,如 k(千字节)、m(兆字节)等。

示例及输出分析

vmstat 2 3

该命令表示每 2 秒刷新一次信息,共刷新 3 次。输出示例如下:
 
 
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 887620  34832 377404    0    0     0     0   24   41  0  0 100  0  0
 0  0      0 887620  34832 377404    0    0     0     0   30   56  0  0 100  0  0
 0  0      0 887620  34832 377404    0    0     0     0   26   51  0  0 100  0  0
  • procs(进程相关)
    • r:等待运行的进程数,该值越大,说明系统越繁忙。
    • b:处于不可中断睡眠状态的进程数,通常表示进程在等待 I/O 操作完成。
  • memory(内存相关)
    • swpd:已使用的交换空间大小(单位:KB)。
    • free:空闲的物理内存大小(单位:KB)。
    • buff:用于缓冲块的内存大小(单位:KB)。
    • cache:用于缓存的内存大小(单位:KB)。
  • swap(交换空间相关)
    • si:从磁盘交换到内存的数据量(单位:KB/s)。
    • so:从内存交换到磁盘的数据量(单位:KB/s)。
  • io(输入输出相关)
    • bi:从块设备读入数据到系统的量(单位:块 /s)。
    • bo:系统写入到块设备的数据量(单位:块 /s)。
  • system(系统相关)
    • in:每秒的中断次数,包括时钟中断。
    • cs:每秒的上下文切换次数。
  • cpu(CPU 相关)
    • us:用户进程使用 CPU 的时间百分比。
    • sy:系统进程使用 CPU 的时间百分比。
    • id:CPU 空闲时间百分比。
    • wa:CPU 等待 I/O 完成的时间百分比。
    • st:被虚拟机偷走的 CPU 时间百分比。

iostat 命令

iostat(Input/Output Statistics)命令主要用于监控系统的磁盘 I/O 性能,能提供磁盘设备的详细统计信息。

基本语法

iostat [选项] [刷新间隔 [刷新次数]]

常用选项

  • -c:仅显示 CPU 统计信息。
  • -d:仅显示磁盘统计信息。
  • -k:以 KB 为单位显示磁盘 I/O 数据。
  • -m:以 MB 为单位显示磁盘 I/O 数据。
  • -x:显示更详细的磁盘统计信息。

示例及输出分析

iostat -dx 2 3

该命令表示以详细模式每 2 秒刷新一次磁盘统计信息,共刷新 3 次。输出示例如下:
 
Linux 5.4.0-124-generic (hostname)  01/01/2024  _x86_64_    (8 CPU)

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda               0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
sdb               0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
  • Device:磁盘设备名称。
  • r/s:每秒的读操作次数。
  • w/s:每秒的写操作次数。
  • rkB/s:每秒从磁盘读取的数据量(单位:KB)。
  • wkB/s:每秒写入磁盘的数据量(单位:KB)。
  • rrqm/s:每秒进行读合并的次数,即多个小读操作合并成一个大读操作的次数。
  • wrqm/s:每秒进行写合并的次数。
  • %rrqm:读合并操作的百分比。
  • %wrqm:写合并操作的百分比。
  • r_await:读操作的平均等待时间(单位:毫秒)。
  • w_await:写操作的平均等待时间(单位:毫秒)。
  • aqu-sz:平均请求队列长度。
  • rareq-sz:平均读请求大小(单位:扇区)。
  • wareq-sz:平均写请求大小(单位:扇区)。
  • svctm:平均服务时间(单位:毫秒),即处理 I/O 请求所需的时间。
  • %util:磁盘的利用率,该值接近 100% 表示磁盘处于繁忙状态。

posted on 2025-02-16 11:51  数据库那些事儿  阅读(209)  评论(0)    收藏  举报