用DD測試磁盤讀寫速度


轉自 http://blog.csdn.net/xrb66/article/details/7180919   xrb666緩存

一、dd bs=1M count=128 if=/dev/zero of=test async

二、dd bs=1M count=128 if=/dev/zero of=test; sync ide

三、dd bs=1M count=128 if=/dev/zero of=test conv=fdatasync.net

四、dd bs=1M count=128 if=/dev/zero of=test oflag=dsyncblog

答:區別在於內存中寫緩存的處理方式。內存

1.get

dd bs=1M count=128 if=/dev/zero of=test同步

沒有加任何參數,dd默認的方式不包括「同步(sync)」命令。也就是說,dd命令完成前並無讓系統真正把文件寫到磁盤上。因此以上命令只是單純地把這128MB的數據讀到內存緩衝當中(寫緩存[write cache])。因此你獲得的將是一個超級快的速度。由於其實dd給你的只是讀取速度,直到dd完成後系統纔開始真正往磁盤上寫數據,但這個速度你是看不到了。因此若是這個速度很快,先不要偷着樂。呵呵it

2.class

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

和前面1中的徹底同樣。分號隔開的只是前後兩個獨立的命令。當sync命令準備開始往磁盤上真正寫入數據的時候,前面dd命令已經把錯誤的「寫入速度」值顯示在屏幕上了。因此你仍是得不到真正的寫入速度。

3.

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

加入這個參數後,dd命令執行到最後會真正執行一次「同步(sync)」操做,因此這時候你獲得的是讀取這128M數據到內存並寫入到磁盤上所需的時間,這樣算出來的時間纔是比較符合實際的。

4.

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

加入這個參數後,dd在執行時每次都會進行同步寫入操做。也就是說,這條命令每次讀取1M後就要先把這1M寫入磁盤,而後再讀取下面這1M,一共重複128次。這多是最慢的一種方式了,由於基本上沒有用到寫緩存(write cache)。

問:那應該用哪種呢?

答:建議使用

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

由於這種方式最接近計算機實際操做,因此測出來的數據最有參考價值。

相關文章
相關標籤/搜索