FIO是測試IOPS的很是好的工具,用來對硬件進行壓力測試和驗證,支持13種不一樣的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。ios
fio 官網地址:http://freshmeat.net/projects...工具
wget http://brick.kernel.dk/snaps/fio-2.2.5.tar.gz yum install libaio-devel tar -zxvf fio-2.2.5.tar.gz cd fio-2.2.5 make make install
a) 隨機讀oop
(可直接用,向磁盤寫一個2G文件,10線程,隨機讀1分鐘,給出結果)測試
fio -filename=/tmp/test_randread -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest
參數說明.net
filename=/dev/sdb1 測試文件名稱,一般選擇須要測試的盤的data目錄。 direct=1 測試過程繞過機器自帶的buffer。使測試結果更真實。 rw=randwrite 測試隨機寫的I/O rw=randrw 測試隨機寫和讀的I/O bs=16k 單次io的塊文件大小爲16k bsrange=512-2048 同上,提定數據塊的大小範圍 size=5g 本次的測試文件大小爲5g,以每次4k的io進行測試。 numjobs=30 本次的測試線程爲30. runtime=1000 測試時間爲1000秒,若是不寫則一直將5g文件分4k每次寫完爲止。 ioengine=psync io引擎使用pync方式 rwmixwrite=30 在混合讀寫的模式下,寫佔30% group_reporting 關於顯示結果的,彙總每一個進程的信息。
其餘參數線程
lockmem=1g 只使用1g內存進行測試。 zero_buffers 用0初始化系統buffer。 nrfiles=8 每一個進程生成文件的數量。 rw=read/write/readwrite 順序讀/順序寫/順序混合讀寫 rw=randread/randwrite/wandrw 隨機讀/隨機寫/隨機混合讀寫
b) 順序讀code
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest
c) 隨機寫隊列
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest
d) 順序寫進程
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest
e) 混合隨機讀寫內存
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest -ioscheduler=noop
Run status group 0 (all jobs): READ: io=85680KB, aggrb=1427KB/s, minb=1427KB/s, maxb=1427KB/s, mint=60002msec, maxt=60002msec Disk stats (read/write): sda: ios=5332/8, merge=0/0, ticks=56490/420, in_queue=56850, util=94.43% Finished
結果參數
io IO數據量 aggrb 平均總帶寬 minb 最小帶寬 maxb 最大帶寬 mint 線程最短運行時間 maxt 線程最長運行時間 ios 總IO數,讀/寫 merge 發生IO合併的次數,讀/寫 ticks Number of ticks kept the disk busy,讀/寫 in_queue 花在隊列上的總時間 util 磁盤利用率