繁体   English   中英

如何在Python中获得读/写磁盘速度?

[英]How to get read/write disk speed in 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

然后我可以解析495.55。 好的,到目前为止一切顺利。

但是在hdparm的手册页上我找到了-t标志的这个解释,基本上说在执行测量时没有其他进程应该同时读/写磁盘:

执行设备读取的时间以进行基准测试和比较。 为了获得有意义的结果,此操作应在其他非活动系统(没有其他活动进程)上重复2-3次,并且至少有几兆字节的可用内存。 这将显示通过缓冲区高速缓存读取磁盘的速度,而无需事先缓存数据。 此测量表明驱动器在Linux下可以维持顺序数据读取的速度,而不会产生任何文件系统开销。 为确保准确测量,在使用BLKFLSBUF ioctl处理-t期间刷新缓冲区高速缓存。

问题是

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

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

但严重的是,由于您在主机上拥有sudo权限,因此您可以使用任何常用的系统监视工具自行检查是否有任何IO密集型任务。 如果没有您的测量结果,您也无法有效地杀死所有IO。 在较长时间内,测量应该给出合理的结果,因为偏差会收敛到稳定的背景噪声。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM