同期IOをベンチマークするときのキューサイズ> 1は意味がありますか?
QD1でも同じ結果を期待しましたが、QD32が実際に良い結果を出すのでしょうか?
私はそれが無視されると思った。ピオから手動オプションの場合--iodepth
:
ioDeepthを1以上に増やしても同期されたioengineには影響しません。
fioコマンド:
fio --name=x --ioengine=posixaio --rw=write --bs=4k --iodepth=1 --size=512MB --fsync=1 --filename=test.img
Result: 5.210 IOPS / 20MB/s
fio --name=x --ioengine=posixaio --rw=write --bs=4k --iodepth=32 --size=512MB --fsync=1 --filename=test.img
Result: 20.100 IOPS / 79MB/s
答え1
(以下をご覧ください。ペオ)
同期IOをベンチマークするときのキューサイズ> 1は意味がありますか?
いいえ(簡単に説明しましたが、読むことができます。特別な場合のfioドキュメント)。
無視されると思います。
ioDeepthを1以上に増やしても同期されたioengineには影響しません。
posixaio
[ioDeepthがioengineに与える影響を示す例]
posixaio
はㅏioエンジンの同期(aio = 非同期I/O:-)視聴したらhttps://github.com/axboe/fio/blob/fio-3.23/engines/posixaio.c#L246フラグが設定されていないことがわかりますFIO_SYNCIO
(参照https://github.com/axboe/fio/blob/fio-3.23/ioengines.h#L65フラグの位置を定義するために使用されます)。
1より大きい非同期ioengineを使用すると、iodepth
定義に従って非同期I / Oベンチマークを作成しようとします。 1を使用して非同期ioengineの同期動作をある程度エミュレートできますが、冗長非同期iodepth
メカニズムを使用すると、わずかな(おそらく小さい)オーバーヘッドを支払うことになります。または純粋な同期I / Oエンジン(名前にsyncを含むioengineを見つけます。iodepth
)そしてこれが結果に影響を与えないことを知る必要があります(実際に同期されているからです!)。