Ssd
在進行同步 IO 基準測試時使用隊列深度是否有意義?
在進行同步 IO 基準測試時隊列深度 > 1 是否有意義?
我期待與 QD1 相同的結果,但 QD32 確實給出了更好的結果?
我以為它會被忽略。在選項的 fio手冊
--iodepth
中:請注意,將 iodepth 增加到 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
(以下是參考fio)
在進行同步 IO 基準測試時隊列深度 > 1 是否有意義?
否(這是一種簡化,但您可以閱讀特殊情況的 fio 文件)。
我雖然
$$ t $$它只會被忽略。
> > 請注意,將 iodepth 增加到 1 以上不會影響同步 ioengine… > > >
[顯示 iodepth 對
posixaio
ioengine 有影響的範例]
posixaio
是一個同步 ioengine(aio = 非同步 I/O :-) 如果您查看https://github.com/axboe/fio/blob/fio-3.23/engines/posixaio.c#L246,您會注意到它沒有t 設置FIO_SYNCIO
標誌(請參閱https://github.com/axboe/fio/blob/fio-3.23/ioengines.h#L65了解標誌的定義位置)。當您使用
iodepth
> 1 的非同步 ioengine 時,根據定義,您是在嘗試創建非同步 I/O 基準。您可以(在某種程度上)通過使用 1 來模擬非同步 ioengine 的同步行為,iodepth
但您會為使用冗餘非同步機制支付一些(可能很小)成本。或者,您可以改用純同步 I/O 引擎(查找名稱中帶有 sync 的 ioengine),您應該會發現這iodepth
不會影響您使用它們的結果(因為它們是真正同步的!)。