磁盤性能測試方法之fio
在進行下列測試前闯狱,請確保磁盤已經(jīng) 4K 對齊士袄。
測試隨機寫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=randwrite -ioengine=libaio -bs=64k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing
測試讀吞吐量:
fio -direct=1 -iodepth=64 -rw=randread -ioengine=libaio -bs=64k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testing
上述測試時 fio 相關(guān)參數(shù)說明:
參數(shù) 說明
-direct=1 測試時忽略 IO 緩存损痰,數(shù)據(jù)直寫讨衣。
-rw=randwrite 測試時的讀寫策略束世,可選值 randread (隨機讀)薛耻、 randwrite(隨機寫)输钩、 read(順序讀)豺型、 write(順序?qū)懀?randrw (混合隨機讀寫)。
-ioengine=libaio 測試方式使用 libaio (Linux AIO买乃,異步 IO)姻氨。 應用使用 IO 通常有二種方式:同步和異步。同步的 IO 一次只能發(fā)出一個 IO 請求剪验,等待內(nèi)核完成才返回肴焊。這樣對于單個線程 iodepth 總是小于 1前联,但是可以透過多個線程并發(fā)執(zhí)行來解決。通常會用 16-32 根線程同時工作把 iodepth 塞滿娶眷。 異步則通常使用 libaio 這樣的方式一次提交一批 IO 請求似嗤,然后等待一批的完成,減少交互的次數(shù)届宠,會更有效率烁落。
-bs=4k 單次 IO 的塊文件大小為 4k。未指定該參數(shù)時的默認大小也是 4k豌注。
-size=1G 測試文件大小為 1G伤塌。
-numjobs=1 測試線程數(shù)為 1。
-runtime=1000 測試時間為 1000 秒轧铁。如果未配置則持續(xù)將前述 -size 指定大小的文件每聪,以每次 -bs 值為分塊大小寫完。
-group_reporting 測試結(jié)果顯示模式齿风,group_reporting 表示匯總每個進程的統(tǒng)計信息药薯,而非以不同 job 匯總展示信息。
-filename=iotest 測試時的輸出文件路徑和名稱聂宾。測試完成后請記得刪除相應文件果善,以免占用磁盤空間诊笤。
-name=Rand_Write_Testing 測試任務名稱系谐。