FIOのインストールと使用

序章

FIO は、IOPS をテストするツールです。ディスクのストレス テストと検証に使用されます。ディスク I/O は、ディスクのパフォーマンスをチェックするための重要な指標です。これは、次の 2 つのカテゴリに分類できます: シーケンシャル読み取りと書き込み、およびランダム読み取りと書き込み負荷条件。FIO は、多数のスレッドまたはプロセスを生成し、ユーザーが指定した特定のタイプの I/O 操作を実行できます。一般的な使用法は、I/O 負荷に一致するジョブ ファイルを作成してシミュレートすることです。つまり、FIO はディスク デバイスのパフォーマンスをテストするために使用される複数の I/O モードを生成できるマルチスレッド I/O 生成ツール。

インストール

wget https://git.kernel.dk/cgit/fio/snapshot/fio-3.32.tar.gz
tar -xvf fio-3.32.tar.gz
cd fio-3.32
./configure --prefix=/opt/software/fio3.32
make -j 16
make install

–prefix: インストールパス。

ソフトリンクを作成します。

ln -s /opt/software/fio3.32 /usr/bin/fio 

テストインストール

fio -v

エンジン libaio をロードできません

libaio をインストールする必要があります。最初の行に 1 があることに注意してください。

apt-get install libaio1
apt-get install libaio-dev

その後、再コンパイルしてインストールします。

cd fio-3.32
./configure --prefix=/opt/software/fio3.32
make -j 16
make install

libaio が正常にインストールされているかどうかを確認します。

fio --enghelp | grep libaio

ここに画像の説明を挿入

共通パラメータの概要

-filename=/dev/sdb		#要测试盘的名称,支持文件系统或者裸设备,/dev/sda2或/dev/sdb
-direct=1		 #测试过程绕过机器自带的buffer,使测试结果更真实(Linux在读写时,数据会先写到缓存,再在后台写到硬盘,读的时候也是优先从缓存中读,这样访问速度会加快,但是一旦掉电,缓存中数据就会清空,所有一种模式为DirectIO,可以跳过缓存,直接读写硬盘)
-ioengine=libaio		#定义使用什么io引擎去下发io请求,常用的一些 libaio:Linux本地异步I/O;rbd:通过librbd直接访问CEPH Rados 
-iodepth=16		 #队列的深度为16,在异步模式下,CPU不能一直无限的发命令到硬盘设备。比如SSD执行读写如果发生了卡顿,那有可能系统会一直不停的发命令,几千个,甚至几万个,这样一方面SSD扛不住,另一方面这么多命令会很占内存,系统也要挂掉了。这样,就带来一个参数叫做队列深度。
-bs=4k           #单次io的块文件大小为4k
-numjobs=10      #本次测试的线程数是10
-size=5G         #每个线程读写的数据量是5GB
-runtime=60      #测试时间为60秒,可以设置2m为两分钟。如果不配置此项,会将设置的size大小全部写入或者读取完为止
-rw=randread     #测试随机读的I/O
-rw=randwrite    #测试随机写的I/O
-rw=randrw       #测试随机混合写和读的I/O
-rw=read         #测试顺序读的I/O
-rw=write        #测试顺序写的I/O
-rw=rw           #测试顺序混合写和读的I/O
-thread          #使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要大,一般都采用thread测试
rwmixwrite=30    #在混合读写的模式下,写占30%(即rwmixread读为70%,单独配置这样的一个参数即可)
-group_reporting     #关于显示结果的,汇总每个进程的信息
-name="TDSQL_4KB_read_test"     #定义测试任务名称
扩展
-lockmem=1g       #只使用1g内存进行测试
-zero_buffers     #用全0初始化缓冲区,默认是用随机数据填充缓冲区
-random_distribution=random    #默认情况下,fio 会在询问时使用完全均匀的随机分布,有需要的话可以自定义访问区域,zipf、pareto、normal、zoned
-nrfiles=8        #每个进程生成文件的数量

テスト例

100% ランダム読み取り、5G サイズ、4K ブロック ファイル:

fio -filename=/dev/sdb -direct=1 -ioengine=libaio -bs=4k -size=5G -numjobs=10 -iodepth=16 -runtime=60 -thread -rw=randread -group_reporting -name="TDSQL_4KB_randread_test"

100% シーケンシャル読み取り、5G サイズ、4K ブロック ファイル:

fio -filename=/dev/sdb -direct=1 -ioengine=libaio -bs=4k -size=5G -numjobs=10 -iodepth=16 -runtime=60 -thread -rw=read -group_reporting -name="TDSQL_4KB_write_test"

70% ランダム読み取り、30% ランダム書き込み、5G サイズ、4K ブロック ファイル:

fio -filename=/dev/sdb -direct=1 -ioengine=libaio -bs=4k -size=5G -numjobs=10 -iodepth=16 -runtime=60 -thread -rw=randrw -rwmixread=70 -group_reporting -name="TDSQL_4KB_randread70-write_test"

70% シーケンシャル読み取り、30% シーケンシャル書き込み、5G サイズ、4K ブロック ファイル:

fio -filename=/dev/sdb -direct=1 -ioengine=libaio -bs=4k -size=5G -numjobs=10 -iodepth=16 -runtime=60 -thread -rw=rw -rwmixread=70 -group_reporting -name="TDSQL_4KB_read70-write_test"

設定ファイル経由で実行

テスト.フィオ:

[global]
filename=/dev/sdb
ioengine=libaio
direct=1
thread
group_reporting

[randread-4k-128M]
rw=randread
bs=4k
size=128M
numjobs=5

[randwrite-4k-128M]
rw=randwrite
bs=4k
size=128M
numjobs=5

[write-4k-128M]
rw=write
bs=4k
size=128M
numjobs=5
fio test.fio

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43912621/article/details/131831720