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

轉載自:http://blog.csdn.net/bigdatahappy/article/details/9734129

[置頂]        正確用DD測試磁盤讀寫速度        

       分類:            linux 78人閱讀 評論(0) 收藏 舉報

磁盤IO常常是hadoop集羣的最大瓶頸,這個測試命令頗有用。
linux

問: 如下幾種方式測試磁盤讀寫速度有什麼區別?  緩存

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

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

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

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

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

  dd bs=1M count=128 if=/dev/zero of=test    測試

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

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

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

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

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

  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    

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

相關文章
相關標籤/搜索