dd命令和fio命令測試磁盤io性能


***摘自他人***

###dd命令測試磁盤io性能
--------------------------------------------------------
1、先熟悉兩個特殊的設備:
(1)/dev/null:回收站、無底洞。
(2)/dev/zero:產生字符。

2、測試磁盤寫能力
time dd if=/dev/zero of=/testw.dbf bs=4k count=100000
因為/dev//zero是一個偽設備,它只產生空字符流,對它不會產生IO,所以,IO都會集中在of文件中,of文件只用於寫,所以這個命令相當於測試磁盤的寫能力。命令結尾添加oflag=direct將跳過內存緩存,添加oflag=sync將跳過hdd緩存。

3、測試磁盤讀能力
time dd if=/dev/sdb of=/dev/null bs=4k
因為/dev/sdb是一個物理分區,對它的讀取會產生IO,/dev/null是偽設備,相當於黑洞,of到該設備不會產生IO,所以,這個命令的IO只發生在/dev/sdb上,也相當於測試磁盤的讀能力。(Ctrl+c終止測試)


4、測試同時讀寫能力
time dd if=/dev/sdb of=/testrw.dbf bs=4k
在這個命令下,一個是物理分區,一個是實際的文件,對它們的讀寫都會產生IO(對/dev/sdb是讀,對/testrw.dbf是寫),假設它們都在一個磁盤中,這個命令就相當於測試磁盤的同時讀寫能力。


###fio測試磁盤iops
--------------------------------------------------------
fio測試磁盤性能
fio 是一款出色的磁盤性能測試工具。其參數如下:

參數 說明
-direct=1 表示測試時忽略I/O緩存,數據直寫。
-iodepth=128 表示使用AIO時,同時發出I/O數的上限為128。
-rw=randwrite 表示測試時的讀寫策略為隨機寫(random writes)。作其它測試時可以設置為:randread(隨機讀random reads)read(順序讀sequential reads)write(順序寫sequential writes)randrw(混合隨機讀寫mixed random reads and writes)。
-ioengine=libaio 表示測試方式為libaio(Linux AIO,異步I/O)。應用使用I/O通常有二種方式:同步和異步。同步的I/O一次只能發出一個I/O請求,等待內核完成才返回。這樣對於單個線程iodepth總是小於1,但是可以透過多個線程並發執行來解決。通常會用 16−32 根線程同時工作將iodepth塞滿。異步則通常使用libaio這樣的方式一次提交一批I/O請求,然后等待一批的完成,減少交互的次數,會更有效率。
-bs=4k 表示單次I/O的塊文件大小為4k。未指定該參數時的默認大小也是4k。測試IOPS時,建議將bs設置為一個比較小的值,如本示例中的4k。測試吞吐量時,建議將bs設置為一個較大的值,如本示例中的1024k。
-size=1G 表示測試文件大小為1G。
-numjobs=1 表示測試線程數為1。
-runtime=1000 表示測試時間為1000秒。如果未配置,則持續將前述-size指定大小的文件,以每次-bs值為分塊大小寫完。
-group_reporting 表示測試結果里匯總每個進程的統計信息,而非以不同job匯總展示信息。
-filename=iotest 指定測試文件的名稱,比如iotest。測試裸盤可以獲得真實的磁盤性能,但直接測試裸盤會破壞文件系統結構,請在測試前提前做好數據備份。
-name=Rand_Write_Testing 表示測試任務名稱為Rand_Write_Testing,可以隨意設定。
測試隨機寫 IOPS:

fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing
測試隨機讀 IOPS:

fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Read_Testing
測試順序寫吞吐量:

fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing
測試順序讀吞吐量:

fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing


免責聲明!

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



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