【LINUX】FIO磁碟隨機讀取效能分析
FIO是測試IOPS的非常好的工具,用來對硬體進行壓力測試和驗證,支援13種不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。
fio 官網地址:http://freshmeat.net/projects...
1.FIO安裝
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
2.FIO用法
a)隨機讀
(可直接用,向磁碟寫一個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
引數說明
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=psyncio引擎使用pync方式 rwmixwrite=30在混合讀寫的模式下,寫佔30% group_reporting關於顯示結果的,彙總每個程序的資訊。
其他引數
lockmem=1g只使用1g記憶體進行測試。 zero_buffers用0初始化系統buffer。 nrfiles=8每個程序生成檔案的數量。 rw=read/write/readwrite順序讀/順序寫/順序混合讀寫 rw=randread/randwrite/wandrw隨機讀/隨機寫/隨機混合讀寫
b)順序讀
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
3.結果示例
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
結果引數
ioIO資料量 aggrb平均總頻寬 minb最小頻寬 maxb最大頻寬 mint執行緒最短執行時間 maxt執行緒最長執行時間 ios總IO數,讀/寫 merge發生IO合併的次數,讀/寫 ticksNumber of ticks kept the disk busy,讀/寫 in_queue花在佇列上的總時間 util磁碟利用率