在linux上,什么可能会减慢发送到HDD的ATA读取验证命令的速度?

在linux上,什么可能会减慢发送到HDD的ATA读取验证命令的速度?,linux,hard-drive,ioctl,ata,Linux,Hard Drive,Ioctl,Ata,我正在编写一个C程序,在Linux上使用ATA read verify(0x40)命令扫描硬盘,就像MHDD在DOS上的扫描一样 我使用HDIO_DRIVE_TASK发出命令,并使用CLOCK_MONOTONIC测量ioctl的阻塞时间。 我以root用户身份运行该程序,并将其ionice设置为实时,但读数始终大于MHDD显示的值。此外,MHDD的结果变化不大,但我的程序的结果经常变化很大。 我尝试为每个块发出两次命令,并测量第二次运行的块时间。 这解决了部分问题,但我的结果仍有很大差异 什么因

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

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

什么因素会减缓我的指挥?我应该如何避免它们


另外,我有一些具有不同运行状况的备用驱动器供测试使用。

也许MHDD显示的不是每个块的值,而是过去N个块上的滑动平均值(某些值为N)。嗯,我尝试在MHDD上的单个块上操作,其输出仍然稳定。