You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

ZFS异步写入在不同队列深度下的异常性能疑问:为何QD2表现最优?

ZFS异步写入在不同队列深度下的异常性能疑问:为何QD2表现最优?

最近看到一篇对比不同SLOG驱动器的文章后,我好奇自己系统在不同队列深度下的性能表现,于是做了一系列测试,结果发现个挺奇怪的现象——ZFS异步写入时,队列深度2(QD2)的IOPS表现始终是最好的。不管我调整压缩算法、块大小还是记录大小,QD2都稳压QD1、QD4甚至QD8一头。按常理来说,队列深度越高性能应该越好才对,这到底是咋回事?

测试环境与配置

我的测试系统配置如下:

  • CPU:i9-13900K
  • 内存:128GB DDR5-4800
  • 存储:两块三星980 PRO组成单镜像Vdev
  • 运行平台:ProxMox 7上的容器

测试使用FIO工具,命令模板为(测试时会替换<4k/8k><1/2/4/8>为对应参数):

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

测试发现的异常与细节

我前后测试了216种不同参数组合(压缩算法、块大小、记录大小、队列深度的搭配),平均结果都指向QD2的IOPS表现最优。同时还有几个额外的疑问点:

  • 记录大小设为16k时性能最差,这点我完全摸不着头脑
  • 块大小用8k时总带宽更高,这个相对容易理解
  • Zstd压缩居然比LZ4表现还好,难道是我把这两块SSD的IO性能榨到极限了?测试过程中SSD的实际读写速度通常在400-700MB/s之间
  • CPU governor的影响极大:设为"Performance"时才是上述结果,要是设为"Powersave",IOPS直接掉30%-50%!

核心疑问

目前我只给ZFS设置了ashift=12,没有做其他额外调优。有没有大佬能解释下,为啥ZFS异步写入在QD2时表现最优?会不会和这俩980 PRO每块只有2个NAND芯片有关?

备注:内容来源于stack exchange,提问作者Sam

火山引擎 最新活动