簡體   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