![不同队列深度下的 ZFS 异步写入性能异常](https://linux22.com/image/784049/%E4%B8%8D%E5%90%8C%E9%98%9F%E5%88%97%E6%B7%B1%E5%BA%A6%E4%B8%8B%E7%9A%84%20ZFS%20%E5%BC%82%E6%AD%A5%E5%86%99%E5%85%A5%E6%80%A7%E8%83%BD%E5%BC%82%E5%B8%B8.png)
出于某种原因,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 种不同组合的平均结果。
(为什么 16k 的记录大小是最糟糕的,我不明白)
(8k 的块大小仍然会导致总体带宽)
看到 Zstd 击败 LZ4 有点惊讶。也许我达到了这些可怜的 SSD 的 IO 限制?实际的测试期间,SSD 活动通常达到 400-700MB/s。
注意:在所有测试中,CPU 调速器都设置为“性能”,当设置为“省电”时,IOPS 数字会下降 30-50%!