1

我正在编写一个 C 程序来使用 Linux 上的 ATA read-verify(0x40) 命令扫描硬盘驱动器,就像 MHDD 在 DOS 上的扫描一样。

我使用 HDIO_DRIVE_TASK 发出命令,并使用 CLOCK_MONOTONIC 测量 ioctl 的阻塞时间。
我以 root 身份运行该程序,并将其 ionice 设置为实时,但读数总是大于 MHDD 显示的读数。另外,MHDD 的结果变化不大,但我的程序的结果经常变化很大。
我尝试为每个块发出两次命令并测量第二次运行的块时间。这解决了部分问题,但我的结果仍然有很大差异。

哪些因素可能会减慢我的指挥速度?我应该如何避免它们?

PS我有一些不同健康状况的备用驱动器供测试使用。

4

0 回答 0