fio工具安裝及使用


fio是一種I / O工具,用於基准測試和壓力/硬件驗證。它支持19種不同類型的I / O引擎(sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio等),I / O優先級(適用於較新的Linux內核) ,評估I / O,分叉或線程作業等等。它可以在塊設備和文件上工作。fio以簡單易懂的文本格式接受職位描述。包含幾個示例作業文件。fio顯示各種I / O性能信息,包括完整的IO延遲和百分位數。Fio廣泛用於許多地方,包括基准測試,QA和驗證目的。它支持Linux,FreeBSD,NetBSD,OpenBSD,OS X,OpenSolaris,AIX,HP-UX,Android和Windows。

下載地址:

http://freshmeat.sourceforge.net/urls/3aa21b8c106cab742bf1f20d60629e3f

安裝:

1. wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz

2. yum install libaio-devel

3. tar -zxvf fio-2.0.7.tar.gz

4. cd fio-2.0.7

5. yum install gcc

6. yum install librbd*

7. make

8. make install

用法:

fio的運行分為兩種方式:1、fio  option   2、fio jobfile

方式一:

fio -filename=/dev/sdx -iodepth=1 -numjobs=1 -thread -rw=randwrite -bs=4k -ioengine=libaio -group_reporting -name=mytest
-randrepeat=0 -time_based -runtime=300 -direct=1

fio -direct=1 -iodepth=12 -rw=rw -ioengine=rbd -bs=4K -group_reporting -name=test -numjobs=4 -runtime=600 
clientname=admin -pool=pool-4f54c712d0fc4ae494d924031cb0f81f -rbdname=volume-b54cffb2fe31417695d819bb40af4c6f

fio -thread -ioengine=libaio -group_reporting -name=mytest -randrepeat=0 -time_based -runtime=300 -direct=1 
rwmixread=70 -filename=/dev/sdi:/dev/sdj -rw=randrw -bs=4k -numjob=1 --iodepth=128

參數解釋:

-rw=read(100%順序讀) -rw=write(100%順序寫) -rw=randread(100%隨機讀) -rw=randwrite(100%隨機寫),
-rw=rw -rwmixread=70,混合順序70%讀30%寫
-direct=1繞過內存 -iodepth 1隊列長度
-thread -numjobs=30 線程,如果沒有thread就是進程。
-runtime=10秒
-name=mytest 作業名稱
-filename=指定測試設備
group_reportig 開啟報告,要不然得單獨統計每個線程 跑的結果
bs=4k ,指定測試粒度。
size=200GB,指定測試數據量。也可以不指定。
ioengine=libaio,指定測試引擎。

bssplit=blocksize/percentage;blocksize/percentage

bssplit=4k/10:64k/50;32k/40

­random_generator=str

方式二:

fio job_file

job_file內容:

job file格式采用經典的ini文件,[ ]中的值表示job name,可以采用任意的ASCII字符,‘global’除外,global有特殊的意義。Global section描述了job file中各個job的默認配置值。一個job section可以覆蓋global section中的參數,一個job file可以包含幾個global section.一個job只會受到它上面的global section的影響。‘;’和‘#’可以用作注釋

兩個進程,分別從一個從128MB文件中,隨機讀的job file.

[global]

rw=randread

size=128m

 

[job1]

 

[job2]

;–end job file–

job1和job2 section是空的,因為所有的描述參數是共享的。沒有給出filename=選項,fio會為每一個job創建一個文件名,如果用命令寫,則是:

$fio –name=global –rw=randread –size=128m –name=job1 –name=job2

環境變量

在job file中支持環境變量擴展。類似於${VARNAME}可以作為選項的值(在=號右邊)。

實例:

$SIZE=64m  NUMJOBS=4 fio jobfile,fio

;–start job files–

[random-writers]

rw=randwrite

size=${SIZE}

numjobs=${NUMJOBS}

;–end job file–

一個job包含的基本的參數

1)IO類型

向文件發起的IO類型。

<1>readwrite=str,rw=str

read 順序讀

write 順序寫

randwrite 隨機寫

randread 隨機讀

rw,readwrite 順序混合讀寫

randrw 隨機混合讀寫

server/client

這兩個參數涉及到fio的client/server模式

fio --server

然后此台fio進入server模式,默認打開8765端口,在另一台機器執行

fio --client=host jobfile

fio進入client模式,host指向server模式的機器,就可以實現將jobfile發送到server機器執行fio測試的任務。執行結果將返回client的機器。


verify數據校驗

verify=meta     只verify header的crc32校驗,不去verify后面的data區域,這是執行最快的一種verify。

verify = crc32   如果使用verify=crc32,整個4kb的數據會分為兩個部分:

  • header部分:前40字節,其中最后4個字節是header的crc32校驗
  • data部分:41~4096字節,其中最開始4個字節是data區域的crc32校驗

在verify的時候,header是默認校驗的,就是校驗header的內容和header的crc校驗,如果指定的verify=crc32,那么在校驗header之后,還會校驗data區域內容和data區域的crc

生成性能結果圖片
fio_generate_plots 可以直接生成IO性能圖片,通過yum可以直接安裝該插件:yum install gnuplot
1.寫成一個配置文件
使用方法如下:
[global]
runtime=60
time_based
group_reporting
write_bw_log=test_fio_statistics
[test]
filename=/dev/zd16
bs=4k
ioengine=libaio
rw=rw
numjobs=1
iodepth=160
rwmixread=0
fsync=10
通過write_bw_log 生成一個test_fio_statistics的文件。
2.第二步運行fio的作圖工具:
fio_generate_plots test_fio_statistics.log

 



 
 
 
 
 

 


免責聲明!

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



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