Linux 下使用 dd 命令進行硬碟 I/O 效能檢測
如何使用dd命令測試我的硬碟效能?如何在linux作業系統下檢測硬碟的讀寫速度?
你可以使用以下命令在一個Linux或類Unix作業系統上進行簡單的I/O效能測試。
- dd命令 :它被用來在Linux和類Unix系統下對硬碟裝置進行寫效能的檢測。
- hparm命令:它用來在基於 Linux 的系統上獲取或設定硬碟引數,包括測試讀效能以及快取效能等。
在這篇指南中,你將會學到如何使用dd命令來測試硬碟效能。
使用dd命令來監控硬碟的讀寫效能:
- 開啟shell終端。
- 或者通過ssh登入到遠端伺服器。
- 使用dd命令來測量伺服器的吞吐率(寫速度) dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
- 使用dd命令測量伺服器延遲 dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync
理解dd命令的選項
在這個例子當中,我將使用搭載Ubuntu Linux 14.04 LTS系統的RAID-10(配有SAS SSD的Adaptec 5405Z)伺服器陣列來執行。基本語法為:
dd if=/dev/input.file of=/path/to/output.file bs=block-size count=number-of-blocks oflag=dsync ## GNU dd語法 ## dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync ##另外一種GNU dd的語法 ## dd if=/dev/zero of=/tmp/testALT.img bs=1G count=1 conv=fdatasync
輸出樣例:
圖01: 使用dd命令獲取的伺服器吞吐率
請各位注意在這個實驗中,我們寫入一個G的資料,可以發現,伺服器的吞吐率是135 MB/s,這其中
- if=/dev/zero (if=/dev/input.file) :用來設定dd命令讀取的輸入檔名。
- of=/tmp/test1.img (of=/path/to/output.file):dd命令將input.file寫入的輸出檔案的名字。
- bs=1G (bs=block-size) :設定dd命令讀取的塊的大小。例子中為1個G。
- count=1 (count=number-of-blocks):dd命令讀取的塊的個數。
- oflag=dsync (oflag=dsync) :使用同步I/O。不要省略這個選項。這個選項能夠幫助你去除caching的影響,以便呈現給你精準的結果。
- conv=fdatasyn: 這個選項和oflag=dsync含義一樣。
在下面這個例子中,一共寫了1000次,每次寫入512位元組來獲得RAID10伺服器的延遲時間:
dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync
輸出樣例:
1000+0 records in 1000+0 records out 512000 bytes (512 kB) copied, 0.60362 s, 848 kB/s
請注意伺服器的吞吐率以及延遲時間也取決於伺服器/應用的負載。所以我推薦你在一個剛剛重啟過並且處於峰值時間的伺服器上來執行測試,以便得到更加準確的度量。現在你可以在你的所有裝置上互相比較這些測試結果了。
為什麼伺服器的吞吐率和延遲時間都這麼差?
低的數值並不意味著你在使用差勁的硬體。可能是硬體 RAID10的控制器快取導致的。
使用hdparm命令來檢視硬碟快取的讀速度。
我建議你執行下面的命令2-3次來對裝置讀效能進行檢測,以作為參照和相互比較:
### 有快取的硬碟讀效能測試——/dev/sda ### hdparm -t /dev/sda1 ## 或者 ## hdparm -t /dev/sda
然後執行下面這個命令2-3次來對快取的讀效能進行對照性檢測:
## Cache讀基準——/dev/sda ### hdparm -T /dev/sda1 ## 或者 ## hdparm -T /dev/sda
或者乾脆把兩個測試結合起來:
hdparm -Tt /dev/sda
輸出樣例:
圖02: 檢測硬碟讀入以及快取效能的Linux hdparm命令
請再次注意,由於檔案檔案操作的快取屬性,你將總是會看到很高的讀速度。
使用dd命令來測試讀取速度
為了獲得精確的讀測試資料,首先在測試前執行下列命令,來將快取設定為無效:
flush echo 3 | sudo tee /proc/sys/vm/drop_caches time time dd if=/path/to/bigfile of=/dev/null bs=8k
筆記本上的示例
執行下列命令:
### 帶有Cache的Debian系統筆記本吞吐率### dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct ###使cache失效### hdparm -W0 /dev/sda ###沒有Cache的Debian系統筆記本吞吐率### dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct
蘋果OS X Unix(Macbook pro)的例子
GNU dd has many more options but OS X/BSD and Unix-like dd command need to run as follows to test real disk I/O and not memory add sync option as follows:
GNU dd命令有其他許多選項,但是在 OS X/BSD 以及類Unix中, dd命令需要像下面那樣執行來檢測去除掉記憶體地址同步的硬碟真實I/O效能:
## 執行這個命令2-3次來獲得更好地結果 ### time sh -c "dd if=/dev/zero of=/tmp/testfile bs=100k count=1k && sync"
輸出樣例:
1024+0 records in 1024+0 records out 104857600 bytes transferred in 0.165040 secs (635346520 bytes/sec) real 0m0.241s user 0m0.004s sys 0m0.113s
本人Macbook Pro的寫速度是635346520位元組(635.347MB/s)。
不喜歡用命令列?
你可以在Linux或基於Unix的系統上使用disk utility(gnome-disk-utility)這款工具來得到同樣的資訊。下面的那個圖就是在我的Fedora Linux v22 VM上擷取的。
圖形化方法
點選“Activites”或者“Super”按鍵來在桌面和Activites檢視間切換。輸入“Disks”
圖03: 開啟Gnome硬碟工具
在左邊的皮膚上選擇你的硬碟,點選configure按鈕,然後點選“Benchmark partition”:
圖04: 評測硬碟/分割槽
最後,點選“Start Benchmark…”按鈕(你可能需要輸入管理員使用者名稱和密碼):
圖05: 最終的評測結果
如果你要問,我推薦使用哪種命令和方法?
- 我推薦在所有的類Unix系統上使用dd命令(time sh -c “dd if=/dev/zero of=/tmp/testfile bs=100k count=1k && sync)
- 如果你在使用GNU/Linux,使用dd命令 (dd if=/dev/zero of=/tmp/testALT.img bs=1G count=1 conv=fdatasync)
- 確保你每次使用時,都調整了count以及bs引數以獲得更好的結果。
- GUI方法只適合桌面系統為Gnome2或Gnome3的Linux/Unix筆記本使用者。
相關文章
- IOSTAT對linux硬碟IO效能進行檢測iOSLinux硬碟
- linux dd 測試硬碟的讀寫效能Linux硬碟
- linux監測I/O效能-iostatLinuxiOS
- Linux 下的I/O效能分析 iotopLinux
- Linux下磁碟I/O測試Linux
- 如何監測 Linux 的磁碟 I/O 效能Linux
- 使用dd命令進行遠端備份
- Redhat下dd命令測試Redhat
- hdparm 測試硬碟讀寫速度I/O硬碟
- 在Linux下測試磁碟的I/OLinux
- 使用 dd 檢查儲存效能
- 使用 Sysbench 進行 Linux 效能測試Linux
- linux下dd命令詳解Linux
- linux下如何使用檔案來模擬硬碟進行ASM測試Linux硬碟ASM
- Ubuntu使用dd命令實現硬碟級複製Ubuntu硬碟
- Linux下如何測試磁碟I/O: ( hdparm -t)Linux
- 【LINUX】正確的使用dd進行磁碟讀寫速度測試Linux
- Linux命令列效能檢測工具Linux命令列
- AIX 下磁碟 I/O 效能分析[轉]AI
- 【AIX】AIX 下磁碟 I/O 效能分析AI
- hp unix 硬碟I/O分析硬碟
- Linux dd 命令Linux
- 使用 iotop 監控哪些程式在進行I/O操作
- solaris檢視I/O、記憶體、網路效能優化命令 iostat , vmstat記憶體優化iOS
- 磁碟效能測試工具 flexible I/O testerFlex
- Linux下的5種I/O模型與3組I/O複用Linux模型
- solaris檢視I/O、記憶體、網路效能最佳化命令 iostat , vmstat記憶體iOS
- Linux命令----分析系統I/O的瓶頸Linux
- 【java】使用jprofiler進行效能測試Java
- 測試boot庫下I/O模型型別boot模型型別
- linux磁碟管理命令--ddLinux
- Linux dd命令全面解析Linux
- Java™ 教程(命令列I/O)Java命令列
- linux 下filesystemio_options disk_asynch_io 導致的I/O效能下降Linux
- 進行Linux效能監控的命令介紹Linux
- 如何在Linux系統伺服器中測試儲存/磁碟I/O效能?Linux伺服器
- 什麼情況下進行效能測試
- 使用diskpart命令進行擴充硬碟空間操作說明硬碟