判断IO瓶颈是读还是写

判断IO瓶颈是读还是写

我用来ddrescue将故障磁盘映像为稀疏文件 - 通常文件会变得高度碎片化(> 50k 碎片)。

我怀疑有时成像速度会因为碎片而降低。有没有办法检测缓慢是由于读取源磁盘还是写入目标文件造成的?

答案1

我假设ddrescue正在从一个块设备读取并写入另一个块设备。您可以运行iostat -xyh 10以了解每个块设备上每秒读取/写入/丢弃的数据量(读取/写入/丢弃的次数以及读取/写入/丢弃的数据量)。

带有一个 SSD 的笔记本电脑的输出示例:

$ iostat -xyh /dev/nvme0n1 10
Linux 5.4.0-26-generic (tux)        05/16/2020      _x86_64_        (4 CPU)


avg-cpu:  %user   %nice %system %iowait  %steal   %idle
          16.3%    0.0%   34.7%    9.3%    0.0%   39.6%

     r/s     rkB/s   rrqm/s  %rrqm r_await rareq-sz Device
    0.60      9.6k     0.00   0.0%    1.17    16.0k nvme0n1

     w/s     wkB/s   wrqm/s  %wrqm w_await wareq-sz Device
 2422.60    294.7M     0.40   0.0%   11.41   124.5k nvme0n1

     d/s     dkB/s   drqm/s  %drqm d_await dareq-sz Device
    0.00      0.0k     0.00   0.0%    0.00     0.0k nvme0n1

  aqu-sz  %util Device
   23.25  34.3% nvme0n1

从这些数字可以很明显地看出,我对 SSD 进行了大量写入,而几乎没有读取操作。您可能还想关注与读取(“r_await”)和写入(“w_await”)相关的 iowait 时间。

请参阅iostat 手册页了解详情。

相关内容