truenas scale的arc配置
调整默认的 arc内存占用规则
根据ZFS的配置文档,系统通过zfs_arc_max来控制用做缓存的内存使用量。zfs_arc_max的默认值是0,代表50%。此外,还有一个zfs_arc_sys_free的参数,用于控制系统的空余内存上限,默认也是0。
调整配置
因此,我们要调整内存占用规则,就需要修改上述相关参数
进入
设置(System Settings)
– >高级(Advanced)
里找到Init/Shutdown Script
添加脚本
echo SIZE_IN_BYTES >> /sys/module/zfs/parameters/zfs_arc_max
其中 SIZE_IN_BYTES换成你想要的数值,例如2GB
的话,填2147483648
1
echo 2147483648 >> /sys/module/zfs/parameters/zfs_arc_max
ps任何pcie的直通都会导致pve无法使用内存ballooning技术,会让虚拟机在一开始就分配所有需要的内存,所以pve下的truenas不推荐直通pcie设备
zfs-doc
上面的链接又详细的zfs的参数说明
不影响zfs使用的最大的内存但是又要在使用完后积极的释放
需要修改的参数的有以下这几个
zfs_arc_eviction_pct
zfs_arc_shrink_shift
zfs_arc_sys_free
zfs_arc_eviction_pct
zfs_arc_eviction_pct 的默认值为 200%,表示在内存不足时,为每 2KB 释放内存,1KB 可被重新分配使用。增大该值(如 300%-400%)将加快 ARC 在高负载后的释放速度。此设置会增加 ARC
清理时释放的内存总量,从而有效释放更多的内存TrueNAS Open Enterprise Storage
50% ARC 每次收缩当前大小的 50%,即一半。
25%
12.5%
6.25%
3.125%
1.5625%
0.78125%
将 zfs_arc_eviction_pct 设置为 300 或 400,确保在密集 IO 操作后有更快速的缓存释放。
zfs_arc_shrink_shift
zfs_arc_shrink_shift 默认值为 7,意味着在内存紧张时,ARC 缩减速率约为 0.8%。降低该值(如设为 4-5)会更激进地减少 ARC 缓存的大小,适合在内存频繁短缺时使用
设置 zfs_arc_shrink_shift 为 4 或 5,以实现较为激进的内存释放,确保在高负载后更快腾出内存。
zfs_arc_sys_free
zfs_arc_sys_free 此参数决定系统应该保留多少空闲内存。默认为系统物理内存的 1/64 或 512KB,适当增大该值可以让 ARC 更积极地释放缓存,保证系统有更充足的可用内存( TrueNAS Open Enterprise
Storage
如果有 14GB 总内存,可以设置 zfs_arc_sys_free 为
268435456(256MB)或更大,这样可以在高内存需求时保留较多的空闲内存,防止 ARC 占用过多
1 | echo 300 >> /sys/module/zfs/parameters/zfs_arc_eviction_pct |