fio安裝
fio 3.21下載地址
下載之后解壓tar -xzvf,打開解壓后的文件夾
./configure --enable-gfio # 只有加這個參數(shù)才能編譯安裝gfio
make fio
make gfio
make install
CentOS 7 make時缺少頭文件問題
我安裝的虛擬機(jī)是CentOS 7,fio-3.21版本需要更高版本的gcc來編譯,可以使用scl來臨時升級一下gcc
yum install -y centos-release-scl
yum install -y devtoolset-7-gcc devtoolset-7-gcc-c++
scl enable devtoolset-7 bash
fio參數(shù)
-directory:文件創(chuàng)建的目錄,當(dāng)對NFS文件系統(tǒng)進(jìn)行測試時,該參數(shù)可以指定客戶端NFS掛載的目錄
-name:創(chuàng)建的文件名稱
-size:每個線程讀寫的文件總大小,除非被runtime等限定,否則當(dāng)讀寫完成該文件測試才停止。在fio測試開始之前會創(chuàng)建指定大小的文件,文件名由name參數(shù)指定。
-blocksize、-bs參數(shù),一次讀取的字節(jié)數(shù)
bs=256k means 256k for reads, writes and trims.
bs=8k,32k means 8k for reads, 32k for writes and trims.
bs=8k,32k, means 8k for reads, 32k for writes, and default for trims.
bs=,8k means default for reads, 8k for writes and trims.
bs=,8k, means default for reads, 8k for writes, and default for trims.
-blocksize_range=irange[,irange][,irange], bsrange=irange[,irange][,irange] 指定了block size的范圍,相當(dāng)于動態(tài)的block size
-rw參數(shù):當(dāng)指定了混合讀寫時,可以指定rwmixread或者rwmixwrite的值,代表read或者write所占的百分比,如果指定了兩個并且相加不等于100,后指定的值會覆蓋先指定的值
read 順序讀
write 順序?qū)?br> rw,readwrite 順序混合讀寫
randwrite 隨機(jī)寫
randread 隨機(jī)讀
randrw 隨機(jī)混合讀寫
-runtime=int:測試運行的總時間,此時若size指定的文件大小還沒有讀寫完畢則會終止
-ioengine=psync:使用pread/pwrite I/O
-thread:使用線程而不是fork來創(chuàng)建新的任務(wù)
-direct=1 繞過機(jī)器自帶的buffer,使結(jié)果更真實
iodepth 1 隊列深度
group_reporting 多個任務(wù)整合統(tǒng)計信息
--output-format:輸出格式(normal',terse', json', orjson+')
--output=:輸出的文件名
fio測試結(jié)果分析
測試命令
fio -directory=/mnt/nfs/ -direct=1 -iodepth 1 -thread -ioengine=psync -rw=randwrite -bs=4k -size=1G -numjobs=10 -runtime=60 -group_reporting -name=randwrite_4k_1G
測試結(jié)果圖

write:(讀模式下)IOPS:平均每秒IO數(shù)目,BW:以2為基數(shù)的磁盤吞吐量(以10為基數(shù)的磁盤吞吐量)(以2為基數(shù)的I/O總量 / 線程運行總時間)
clat:Completion latency。最小值,最大值,平均值和標(biāo)準(zhǔn)差。this denotes the time from submission to completion of the I/O pieces.
lat:總的延遲。最小值,最大值,平均值和標(biāo)準(zhǔn)差。
clat:Completion latency統(tǒng)計信息。百分比th=[Completion latency]。表示此完成時延下占比。
bw:帶寬統(tǒng)計信息
iops:IOPS的統(tǒng)計信息
lat:I/O完成延遲統(tǒng)計。統(tǒng)計時間為從I/O離開fio到IO完成的這段時間,格式為“時間=百分比”,代表I/O時間為從上一個時間到該時間以下的百分比。
cpu:CPU使用情況。用戶和系統(tǒng)時間,以及線程經(jīng)歷的上下文切換數(shù)目、系統(tǒng)和用戶時間的使用,以及主要和次要的缺頁數(shù)量。
IO depths=io隊列深度
IO submit=單個IO提交要提交的IO數(shù)
IO complete= Like the above submit number, but for completions instead.
IO issued= The number of read/write requests issued, and how many of them were short.
IO latency=IO完延遲的分布
gfio應(yīng)用
使用gfio時需要將fio的參數(shù)寫成配置文件的格式(XXX.fio)
上述測試中的參數(shù)寫成配置文件的格式:
[global]
direct=1
directory=/mnt/nfs/
filename=file_size_1G
ioengine=psync
thread
group_reporting
[randwrite_4k_1G]
rw=randwrite
bs=4k
size=1G
runtime=60
numjobs=10
randwrite_4k_1G下為一個job的配置,其中g(shù)lobal配置了所有的job共同的信息,fio的基本格式如下
[global]
# all job have this feature
[job0]
# job 0 feature
[job1]
# job 1 feature
gfio使用過程
- 命令行中使用gfio,打開gfio的圖形界面。
- 點擊File,選擇Open,打開xxx.fio文件
- 然后點擊圖形界面右下角的connect按鈕
- 連接之后點擊send,將參數(shù)發(fā)送給host
- 點擊start開始測試
當(dāng)測試完成之后測試結(jié)果會自動彈出,如下圖所示。其中參數(shù)含義與fio的輸出參數(shù)含義表示基本一致。


MobaXterm使用gfio
如果虛擬機(jī)沒有圖形界面,可以使用MobaXterm來連接虛擬機(jī)并使用遠(yuǎn)程桌面
服務(wù)器端安裝軟件
yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock
啟用 X11 Forwarding
vim /etc/ssh/sshd_config
# 修改如下內(nèi)容
X11Forwarding yes
X11UseLocalhost no
# 重啟ssh服務(wù)
service sshd restart
參考文獻(xiàn)
【1】Fio安裝、測試,Gfio圖形化測試I/O讀寫性能
【2】使用 MobaXterm 開啟 linux 的遠(yuǎn)程桌面
【3】FIO使用詳解
【4】fio 2種畫圖方法 fio_generate_plots 和 gfio