实用:iostat推荐选项及为什么%util不可信

iostat 是一个用于监控系统输入/输出设备负载的命令行工具。

推荐选项–human -d -x

它有很多的选项,这是日常使用最简单最频繁的选项组合:

  • iostat --human -d -x sda sdb 1 3

    • --human-h:这个选项使得输出的数据以人类可读的格式显示,例如使用KB、MB等单位而不是单纯的字节数。
    • -d:这个选项告诉 iostat 只显示设备(如硬盘)的利用率报告,而不会显示CPU的使用情况。
    • -x:扩展统计信息。使用这个选项会显示更详细的I/O统计信息,包括但不限于平均请求大小、平均队列长度等。
    • sda sdb:指定要监控的设备名称,在这个例子中是 sdasdb。这些通常是系统中的硬盘或其他存储设备。
    • 1 3:这两个数字指定了两个参数:间隔时间(1秒)和报告次数(3次)。也就是说,iostat 将每秒生成一次报告,并总共生成3次这样的报告。

综合起来,这条命令的作用是在接下来的3秒内,每隔1秒对 sdasdb 这两个设备进行一次详细的I/O统计分析,并以易读的格式输出结果。

输出的分类与含义

对于 iostat 输出的表头的解释,可以按照 I/O 请求速率I/O 数据量请求合并请求延迟队列长度请求大小设备性能 等类别进行分类。

# iostat --human -d -x sda sdb 1 3
Linux 4.18.0-305.3.1.el8.x86_64 (localhost)        02/26/2025      _x86_64_        (4 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
sdb              1.26   48.58    128.5k      7.2M     1.22     0.00  49.2%   0.0%   11.77    6.14   0.31   102.4k   151.7k   1.98   9.9%
sda              1.29   53.15    133.2k      8.0M     1.27     0.00  49.6%   0.0%   10.28   28.79   1.54   103.4k   154.0k   3.79  20.7%

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
sdb              0.00   24.00      0.0k      1.3M     0.00     0.00   0.0%   0.0%    0.00    2.96   0.07     0.0k    53.4k   2.58   6.2%
sda              0.00   21.00      0.0k      1.8M     0.00     0.00   0.0%   0.0%    0.00   18.24   0.38     0.0k    85.3k   1.71   3.6%

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
sdb              0.00    8.00      0.0k      0.0k     0.00     0.00   0.0%   0.0%    0.00    0.12   0.00     0.0k     0.0k   1.25   1.0%
sda              0.00   17.00      0.0k      0.0k     0.00     0.00   0.0%   0.0%    0.00    0.18   0.00     0.0k     0.0k   1.06   1.8%

以下是分类后的详细解释:


1. I/O 请求速率

  • r/s:每秒完成的读请求数(Read requests per second)。
    表示设备每秒处理的读操作次数。
  • w/s:每秒完成的写请求数(Write requests per second)。
    表示设备每秒处理的写操作次数。

2. I/O 数据量

  • rkB/s:每秒读取的数据量(Read KB per second)。
    表示设备每秒从磁盘读取的数据量,单位为 KB。
  • wkB/s:每秒写入的数据量(Write KB per second)。
    表示设备每秒向磁盘写入的数据量,单位为 KB。

3. 请求合并

  • rrqm/s:每秒合并的读请求数(Read requests merged per second)。
    表示每秒有多少个读请求被合并(通常是相邻的请求)。
  • wrqm/s:每秒合并的写请求数(Write requests merged per second)。
    表示每秒有多少个写请求被合并。
  • %rrqm:读请求合并的百分比(Percentage of read requests merged)。
    表示合并的读请求占总读请求的百分比。
  • %wrqm:写请求合并的百分比(Percentage of write requests merged)。
    表示合并的写请求占总写请求的百分比。

4. 请求延迟

  • r_await:读请求的平均等待时间(毫秒)(Average time for read requests to be served)。
    表示从读请求发出到完成所需的平均时间。
  • w_await:写请求的平均等待时间(毫秒)(Average time for write requests to be served)。
    表示从写请求发出到完成所需的平均时间。

5. 队列长度

  • aqu-sz:平均请求队列长度(Average queue length of the requests)。
    表示设备上等待处理的 I/O 请求的平均数量。

6. 请求大小

  • rareq-sz:读请求的平均大小(KB)(Average size of read requests)。
    表示每个读请求的平均数据量。
  • wareq-sz:写请求的平均大小(KB)(Average size of write requests)。
    表示每个写请求的平均数据量。

7. 设备性能

  • svctm:平均服务时间(毫秒)(Average service time for I/O requests)。
    表示设备处理每个 I/O 请求所需的平均时间。
  • %util:设备的利用率百分比(Percentage of time the device was busy)。
    表示设备处于忙碌状态的时间百分比。如果接近 100%,说明设备可能成为性能瓶颈。

分类总结:

类别字段含义
I/O 请求速率r/s每秒完成的读请求数
w/s每秒完成的写请求数
I/O 数据量rkB/s每秒读取的数据量(KB)
wkB/s每秒写入的数据量(KB)
请求合并rrqm/s每秒合并的读请求数
wrqm/s每秒合并的写请求数
%rrqm读请求合并的百分比
%wrqm写请求合并的百分比
请求延迟r_await读请求的平均等待时间(毫秒)
w_await写请求的平均等待时间(毫秒)
队列长度aqu-sz平均请求队列长度
请求大小rareq-sz读请求的平均大小(KB)
wareq-sz写请求的平均大小(KB)
设备性能svctm平均服务时间(毫秒)
%util设备的利用率百分比

%util对支持并发的SSD/NVME/RAID

  • %util = 设备忙碌的总时间 / 系统已经过去的时间
  • 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
  • 此指标只对传统的HDD有效,而对支持并发的SSD/NVME/RAID没有参考意义。因为并发会导致设备忙碌的总时间远超系统已经过去的时间,往往能看到超过100%甚至200%的情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值