Linux dd工具磁盤讀寫測試分析


話說,Linux 自帶的dd工具測試硬盤讀寫速度只能提供一個大概的測試結果,而且是連續IO 而不是隨機IO ,理論上文件規模越大,測試結果越准確。理論上bs越大,所測得性能越高。

上句來自網上,是不是真的呢?百聞不如一見。今天來進行實際的測試和對比。

找了一台沒有硬盤的機器,再找了一塊希捷7200rpm 3T的硬盤。一塊硬盤只能做raid0,條帶設置為256K。 敲入lsblk命令如下。 

 

一、格式化前對新加的盤進行測試 

1. 讀測試

 

2. 寫測試

 

3. 在測試完下面的2.5后,再返回來測試該磁盤的寫

 可以看出,這三種差別不大。但是和上面一步相差很大!都快成倍數關系了。

 

4. 懷着忐忑的心情,再次測試了下 oflag=dsync參數。結果很快,沒有想象的那么慢,將近10秒,雖然比上面大了不少。當然速度也慢了不少!

 

  5. 上面的寫速度相差比較大,所以再次測試了讀速度。總量沒變,還是1G的數據,只是改變了塊大小,發現速度截然不同!塊變大,速度反而變小,小太多!

 估計是因為沒有文件系統。

6. 不同的bs塊大小測試,發現寫速度變化不大! 

 

二、對系統盤的目錄/mnt/disk1進行測試

1. 在home目錄下操作失敗了

 

2. of 必須指定文件,存不存在沒關系。應該是sda盤已經格式化了文件系統有關。

 

3. 把參數改為oflag=dsync,半天還沒結束!

 

過了很久幾次查看沒動靜,約一小時后,再開了個shell 進來看,文件變成了4G多點!不應該是1G?

 

4. 先ctrl+c退出原理的shell再測試下,不帶后面的參數,再加上時間time的命令。比第二步(2.2)的速度稍有提高。

 

5. 反復三種方式測試了一下

速度基本上比較穩定。沒有加參數速度稍微快一點點,而加參數conv=fdatasync 或者 fsync這兩種沒區別。

而oflag=dsync后續再測。

 

6. 從1.5返回測試不同的塊大小。時間和速度變化不大,和上面(2.5)對比變化也很小,證明開始推斷是正確的。所以文件系統必須要安裝

 

7. 介於上面oflag=dsync的結果,我們再測試一下。

上面又卡主了,約五分鍾后,我新開了一個shell窗口,連續兩次查1.img的大小,已經都4G了,還在增大。所以上面的shell窗口ctrl+c果斷推出。

 

 8.  讀速度非常高,bs為16k是更大。

 

 

到這里為止,我們可以得出一些結論

1.oflag=dsync是對物理數據(磁盤)的緩沖,不經過文件系統。而conv=fdatasync 或者conv=fsync是對文件系統的緩沖,其實字面f就是文件file;而前者data表示只緩存數據,后者數據和元數據都緩存。所以一般情況下都是安裝了文件系統的,所以應選文件系統的參數,也可以默認不選擇,差別不大。

2.bs塊大小寫磁盤,其值變化應該沒多大影響。而對於,有文件系統的情況下,變大性能上升;但是對於物理裸盤,變大性能反而下降

當然只是目前測試的結果,可能還不夠充分,后續有機會再完善,有問題也歡迎提出。

另,有關文件IO知識可以參考https://www.cnblogs.com/orange-CC/articles/12671487.html,來自本人博客;還有更多文件系統和內存管理的知識歡迎閱讀!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM