You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何添加SLOG后TrueNAS的顺序同步写入性能反而下降?

为何添加SLOG后TrueNAS的顺序同步写入性能反而下降?

这问题确实挺反直觉的——按常理SSD当SLOG应该能提升同步写性能才对,结合你给出的测试细节,我来拆解几个可能的原因:

1. SLOG单盘的持续写入瓶颈,被主vdev的多盘并行能力反超

你的主存储池是3个镜像vdev、共6块SATA盘,当没有SLOG时,ZFS会把ZIL(事务日志)分散到多个vdev的空闲空间进行同步写入,能充分利用多盘的并行IO带宽;而你的850 Pro虽然标称500MB/s的写入速度,但它的SLC缓存容量有限,在大文件持续同步写的场景下,缓存很快就会耗尽,后续写入会掉到SSD的原生TLC速度(通常远低于标称值),反而不如6块机械盘并行写入的总带宽,这就解释了bonnie++测试里480M/s vs 107M/s的反转。

2. 大文件同步写场景下,SLOG的两次IO开销成了累赘

ZFS的同步写流程在有无SLOG时差异很大:

  • 有SLOG时:必须先把ZIL记录写入SLOG(等待硬件确认写入完成),再把数据块写入主池(后台异步,但大文件下ARC存不下,后台刷写会频繁触发),相当于多了一次强制同步IO的开销;
  • 无SLOG时:ZFS可以把ZIL记录和数据块的写入合并到同一次IO操作里,减少了额外的IO往返次数,尤其是大文件顺序写时,这种合并优化的效果会被放大。

3. cgroup内存限制放大了SLOG的劣势

你用memory.limit_in_bytes=4G限制了测试进程的内存,这直接压缩了ZFS的ARC缓存空间。ARC本来是用来缓存数据、减少频繁刷盘的,当它被严重限制时,ZFS会更频繁地把数据从ARC刷写到主池,同时SLOG的ZIL写入也会被迫拆分成更多小批量提交——虽然SSD在小IO场景下有优势,但大文件持续写时,这种频繁提交会让SSD的SLC缓存更快耗尽,进一步拉低整体写入速度。

从你后续的fio测试结果也能验证这个逻辑:

  • 小文件循环写(--rw=write --loop=1000 --size=8k):SLOG的低延迟优势体现出来,速度是无SLOG的1.67倍;
  • 中等文件少循环写(--rw=write --loop=10 --size=32M):多盘并行的带宽优势超过了SLOG的低延迟,无SLOG速度反超;
  • 超大文件单次写(--rw=write --loop=1 --size=1G):两者性能接近,说明单盘SSD的极限带宽和多盘并行的带宽差不多抵消了。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:54:33