我正在编写一个C程序,在Linux上使用ATA read-verify(0x40)命令扫描硬盘,就像MHDD扫描在DOS上所做的那样。
我使用HDIO_DRIVE_TASK发出命令,并使用CLOCK_MONOTONIC测量ioctl的阻塞时间。
我以root身份运行程序,并将其ionice设置为实时,但读数总是大于MHDD显示的值。此外,MHDD的结果并没有太大变化,但我的计划结果往往变化很大
我尝试为每个块发出两次命令,并测量第二次运行的块时间。
这解决了部分问题,但我的结果仍然存在很大差异。
哪些因素可能会减慢我的命令?我该如何避免它们?
P.S。我有一些不同运行状况的备用驱动器用于测试用途。