【LINUX】FIO磁盤隨機讀取性能分析

FIO是測試IOPS的很是好的工具,用來對硬件進行壓力測試和驗證,支持13種不一樣的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。ios

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) 隨機讀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

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

結果參數

io           IO數據量
aggrb        平均總帶寬
minb         最小帶寬
maxb         最大帶寬
mint         線程最短運行時間
maxt         線程最長運行時間
ios          總IO數,讀/寫
merge        發生IO合併的次數,讀/寫
ticks        Number of ticks kept the disk busy,讀/寫
in_queue     花在隊列上的總時間
util         磁盤利用率
相關文章
相關標籤/搜索