不同队列深度下的 ZFS 异步写入性能异常

不同队列深度下的 ZFS 异步写入性能异常

出于某种原因,QD2 在原始 IOPS 方面似乎是最好的......

看到一篇有趣的文章后比较几个不同的驱动器的 SLOG 使用情况,我对我自己的系统在不同队列深度下的性能感到好奇。

该系统包括 i9-13900K、128GB DDR5-4800 系统内存和两个三星 980 PRO 作为单个镜像 Vdev。测试在 ProxMox 7 上的容器中以以下配置运行 FIO:

fio --name=random-write --ioengine=posixaio --rw=randwrite --bs=<4k/8k> --numjobs=1 --size=8g --iodepth=<1/2/4/8> --runtime=30 --time_based

我注意到一个奇怪的现象,在异步写入期间,最佳性能始终出现在队列深度为 2 时。我尝试了几种不同的压缩、块大小和记录大小组合,但 QD2 始终具有最佳 IOPS 分数...我原本期望它在更高的队列深度下会变得更好,还是我错过了什么?(我想知道这是否与每个驱动器只有两个 NAND 芯片有关?)

除了设置 ashift=12 和上面列出的内容之外,没有执行任何特定的 ZFS 调整。

有人知道为什么与 QD1、QD4 或 QD8 相比,ZFS 异步写入在 QD2 上似乎效果最佳吗?

现在...图表!这是我尝试的 216 种不同组合的平均结果。

IOPS 与记录大小 (为什么 16k 的记录大小是最糟糕的,我不明白) IOPS 与 FIO 块大小 (8k 的块大小仍然会导致总体带宽IOPS 与压缩

看到 Zstd 击败 LZ4 有点惊讶。也许我达到了这些可怜的 SSD 的 IO 限制?实际的测试期间,SSD 活动通常达到 400-700MB/s。

注意:在所有测试中,CPU 调速器都设置为“性能”,当设置为“省电”时,IOPS 数字会下降 30-50%!

相关内容