linux下測試磁盤的讀寫IO速度-簡易方法


參考資料:
https://blog.csdn.net/zqtsx/article/details/25487185


一:使用hdparm命令


   這是一個是用來獲取ATA/IDE硬盤的參數的命令,是由早期Linux IDE驅動的開發和維護人員 Mark Lord開發編寫的( hdparm has been written by Mark Lord <mlord@pobox.com>, the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk).該命令應該也是僅用於Linux系統,對於UNIX系統,ATA/IDE硬盤用的可能比較少,一般大型的系統都是使用磁盤陣列的.

使用方法很簡單
[root@my1-222 ~]# hdparm -Tt /dev/sda3

/dev/sda3:
 Timing cached reads:   13034 MB in  2.00 seconds = 6527.09 MB/sec
 Timing buffered disk reads: 194 MB in  5.60 seconds =  34.64 MB/sec
[root@my1-222 ~]#

可以看到,2秒鍾讀取了13034MB的緩存,約合6527.09 MB/sec;
在3.11秒中讀取了194MB磁盤(物理讀),讀取速度約合4.64 MB/sec

二:使用dd命令

  這不是一個專業的測試工具,不過如果對於測試結果的要求不是很苛刻的話,平時可以使用來對磁盤的讀寫速度作一個簡單的評估.另外由於這是一個免費軟件,基本上×NIX系統上都有安裝。

首先了解兩個特殊設備

/dev/null 偽設備,回收站.寫該文件不會產生IO
/dev/zero 偽設備,會產生空字符流,對它不會產生IO

測試方法:
a.測試磁盤的IO寫速度
 

   time dd if=/dev/zero of=test.dbf bs=8k count=300000 # 如果要測試實際速度 還要在末尾加上 oflag=direct測到的才是真實的IO速度
例:  
time dd if=/dev/zero of=test.dbf bs=8k count=5000 oflag=direct

 
b.測試磁盤的IO讀速度
 

  dd if=test.dbf bs=8k count=5000 of=/dev/null 

 



   #表示 每次寫入/讀取8k的數據,執行5000次

dd命令可以通用,但不夠專業,也沒有考慮到緩存和物理讀的區分,測試的數據也是僅作參考,不能算是權威。

復制代碼
[root@my1-222 ~]# time dd if=/dev/zero of=test.dbf bs=8k count=300000 300000+0 records in 300000+0 records out 2457600000 bytes (2.5 GB) copied, 2.50417 s, 981 MB/s real 0m2.537s user 0m0.023s sys 0m2.070s [root@my1-222 ~]# time dd if=/dev/zero of=test.dbf bs=8k count=300000 oflag=direct 300000+0 records in 300000+0 records out 2457600000 bytes (2.5 GB) copied, 25.4357 s, 96.6 MB/s real 0m25.550s user 0m0.010s sys 0m13.655s [root@my1-222 ~]# [root@my1-222 ~]# dd if=test.dbf bs=8k count=300000 of=/dev/null 300000+0 records in 300000+0 records out 2457600000 bytes (2.5 GB) copied, 1.94773 s, 1.3 GB/s [root@my1-222 ~]# 
復制代碼

 



dd命令解釋

dd if= of= bs= skip= seek= conv=

一定不要搞混 source 和 target,不然數據會丟失。所以 dd 平時用着順手就叫它 dd,但是不小心把數據弄沒了就該哭着叫它 Data Destroyer 了。

一般它的常用參數有:

bs=n,block size,每次讀取 n bytes 寫入,可與 count 聯用;
ibs=n,一次讀入 bytes 個字節 (default is 512);
obs=n,一次性寫 n bytes 個字節 (default is 512);
bs 可以同時設置上邊兩個參數;
cbs=n,一次轉換 n 個 bytes,即轉換緩沖區大小。;
count=n, bs 操作的次數,僅拷貝 n 個塊,如 dvd: bs=1M count=4430;
skip=n,指 if 后面的原文件跳過 n bytes 再開始讀取;
seek=n,指 of 后面的目標文件跳過 n bytes 再開始寫入;   

測試IO同時讀和寫的速度

復制代碼
[root@my1-222 ~]# time dd if=/dev/sda1 of=test.dbf bs=8k count=300000 25600+0 records in 25600+0 records out 209715200 bytes (210 MB) copied, 2.23626 s, 93.8 MB/s real 0m2.394s user 0m0.002s sys 0m0.352s [root@my1-222 ~]# 
復制代碼

 



(同時測試讀寫速度時生成一個大小200M的 test.dbf文件)

上面測試的數據量比較小,僅作為參考.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM