如何获得读取/写入Python的磁盘速度?

在Python程序中,我需要获得主机上所有磁盘的读写速度。 我用subprocess.check_output()来调用下面的Linux shell命令:

 $ sudo hdparm -t /dev/sda 

结果如下:

 /dev/sda: Timing buffered disk reads: 1488 MB in 3.00 seconds = 495.55 MB/sec 

那么我可以parsing495.55。 好,那么好。

但在hdparm的手册页上,我发现-t标志的这个解释基本上说,当执行测量时,其他进程不应该同时读/写磁盘:

执行设备读取的时间以进行基准比较。 为了获得有意义的结果,这个操作应该在非活动系统上重复2-3次(没有其他活动进程),至less有几兆的可用内存。 这显示了通过缓冲区高速caching读取到磁盘的速度,而无需事先caching数据。 这一测量结果表明,驱动器能够在Linux下保持连续数据读取的速度,而不会造成任何文件系统开销。 为了确保准确的测量结果,在使用BLKFLSBUF读写控制的-t处理过程中缓冲区caching被刷新。

问题是

如何确保在执行测量时没有其他进程正在同时访问磁盘?

根据https://unix.stackexchange.com/questions/55212/how-can-i-monitor-disk-io最可用的解决方案包括工具sysstat或iostat(相同的包)。

但是,严重的是,由于您在主机上拥有sudo权限,您可以检查是否有任何IO密集型任务正在使用任何常用的系统监视工具。 你不能有效地杀死所有的IO没有你的测量也疯了。 在较长的时间内,测量结果应该给你合理的结果,因为偏差趋于稳定的背景噪声。

除此之外,您还需要进行人为测量? 如果您只是想在没有任何RL上下文的情况下测试硬件功能, 请不要挂载磁盘并以二进制模式进行测试。 实际流量正在进行的测量通常会使您的结果更接近实际预期的加载时间。