在Python程序中,我需要获得主机上所有磁盘的累积读写速度。我使用subprocess.check_output()来调用以下Linux命令:
$ 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处理-t时,缓冲区缓存被刷新。
问题是
如何确保在执行测量时没有其他进程同时访问磁盘?
发布于 2016-10-18 12:24:27
根据https://unix.stackexchange.com/questions/55212/how-can-i-monitor-disk-io,最有用的解决方案包括工具sysstat或iostat (相同的包)。
但是说真的,由于您在主机上拥有sudo权限,您可以检查自己是否正在使用任何流行的系统监视工具来执行任何IO密集型任务。如果没有你的测量结果,你不可能有效地杀死所有的IO。在较长的时间内,测量应该给你合理的结果,尽管如此,因为偏差收敛到稳定的背景噪声。
除此之外,你还需要人工测量吗?如果您只想在没有任何RL上下文的情况下测试硬件功能,就不会挂载磁盘并以二进制模式测试它。当实际流量正在进行时,测量结果通常会给出更接近负载时实际预期的结果。
https://stackoverflow.com/questions/40108070
复制相似问题