tft每日頭條

 > 科技

 > 磁盤讀寫速度測試命令

磁盤讀寫速度測試命令

科技 更新时间:2024-12-01 05:45:23

如何使用dd命令測試我的硬盤性能?如何在linux操作系統下檢測硬盤的讀寫速度?

你可以使用以下命令在一個Linux或類Unix操作系統上進行簡單的I/O性能測試。

  • dd命令:它被用來在Linux和類Unix系統下對硬盤設備進行寫性能的檢測。
  • hparm命令:它用來在基于 Linux 的系統上獲取或設置硬盤參數,包括測試讀性能以及緩存性能等。

在這篇指南中,你将會學到如何使用dd命令來測試硬盤性能。

磁盤讀寫速度測試命令(使用dd命令進行硬盤)1

使用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

輸出樣例:

磁盤讀寫速度測試命令(使用dd命令進行硬盤)2

圖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”

磁盤讀寫速度測試命令(使用dd命令進行硬盤)3

圖03: 打開Gnome硬盤工具

在左邊的面闆上選擇你的硬盤,點擊configure按鈕,然後點擊“Benchmark partition”:

磁盤讀寫速度測試命令(使用dd命令進行硬盤)4

圖04: 評測硬盤/分區

最後,點擊“Start Benchmark...”按鈕(你可能需要輸入管理員用戶名和密碼):

磁盤讀寫速度測試命令(使用dd命令進行硬盤)5

圖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筆記本用戶。

作者:Vivek Gite 譯者:DongShuaike校對:wxy

本文由 LCTT原創翻譯,Linux中國榮譽推出

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved