正確用DD測試磁碟讀寫速度

2022-06-15 10:30:17 字數 1306 閱讀 8291

問: 以下幾種方式測試磁碟讀寫速度有什麼區別?

dd if=/dev/zero of=test bs=1m count=128 

dd if=/dev/zero of=test bs=1m count=128;sync

dd if=/dev/zero of=test bs=1m count=128 conv=fdatasync

dd if=/dev/zero of=test bs=1m count=128 oflag=dsync

答:區別在於記憶體中寫快取的處理方式。

dd if=/dev/zero of=test bs=1m count=128
沒有加任何引數,dd預設的方式不包括「同步(sync)」命令。也就是說,dd命令完成前並沒有讓系統真正把檔案寫到磁碟上。所以以上命令只是單純地把這128mb的資料讀到記憶體緩衝當中,寫快取[write cache]。所以你得到的將是乙個超級快的速度。因為其實dd給你的只是讀取到快取的速度,直到dd完成後系統才開始真正往磁碟上寫資料,但這個速度你是看不到了。所以如果這個速度很快,先不要偷著樂。呵呵

dd if=/dev/zero of=test bs=1m count=128 ; sync
和前面1中的完全一樣。分號隔開的只是先後兩個獨立的命令。當sync命令準備開始往磁碟上真正寫入資料的時候,前面dd命令已經把錯誤的「寫入速度」值顯示在螢幕上了。所以你還是得不到真正的寫入速度。

dd if=/dev/zero of=test bs=1m count=128 conv=fdatasync
加入這個引數後,dd命令執行到最後會真正執行一次「同步(sync)」操作,所以這時候你得到的是讀取這128m資料到記憶體並寫入到磁碟上所需的時間,這樣算出來的時間才是比較符合實際的。

dd if=/dev/zero of=test bs=1m count=128 oflag=dsync
加入這個引數後,dd在執行時每次都會進行同步寫入操作。也就是說,這條命令每次讀取1m後就要先把這1m寫入磁碟,然後再讀取下面這1m,一共重複128次。這可能是最慢的一種方式了,因為基本上沒有用到寫快取(write cache)。

問:那應該用哪一種呢?

答:建議使用

dd bs=1m count=128 if=/dev/zero of=test conv=fdatasync
因為這種方式最接近計算機實際操作,所以測出來的資料最有參考價值

寫於: 2023年05月02日

更新於: 2023年03月22日

linux用dd測試磁碟速度

伺服器裝好系統之後,想要知道硬碟的讀寫是否能滿足服務的需要,如果不滿足硬碟的io就是服務的乙個瓶頸。所以我們需要測試硬碟的讀寫速度,測試的方法很多,下面是使用linux 自帶的dd命令測試硬碟的讀寫速度。首先要了解兩個特殊的裝置 dev null 站 無底洞 dev zero 產生字元 time有計...

linux用dd測試磁碟速度

首先要了解兩個特殊的裝置 dev null 站 無底洞 dev zero 產生字元 1 測試磁碟寫能力 time dd if dev zero of test.dbf bs 8k count 300000 因為 dev zero是乙個偽裝置,它只產生空字元流,對它不會產生io,所以,io都會集中在o...

linux用dd測試磁碟速度

linux伺服器裝好系統之後,想要知道硬碟的讀寫是否能滿足服務的需要,如果不滿足硬碟的io就是服務的乙個瓶頸。所以我們需要測試硬碟的讀寫速度,測試的方法很多,下面是使用linux 自帶的dd命令測試硬碟的讀寫速度。time有計時作用,dd用於複製,從if讀出,寫到of。if dev zero不產生i...