zfs truenas内存占用过高,使用完后不积极释放

我的机器是16g的所以对于使用zfs文件系统内存是捉襟见肘,更要命的是truenas在密集io操作之后并不会主动释放使用的内存(也有可能是我的内存太小了)
于是需要修改一些zfs的参数
ps任何pcie的直通都会导致pve无法使用内存ballooning技术,会让虚拟机在一开始就分配所有需要的内存,所以pve下的truenas不推荐直通pcie设备

zfs-doc
上面的链接又详细的zfs的参数说明

需要实现的目标有,不影响zfs使用的最大的内存但是又要在使用完后积极的释放
需要修改的参数的有以下这几个

zfs_arc_eviction_pct
zfs_arc_shrink_shift
zfs_arc_sys_free

  1. zfs_arc_eviction_pct zfs_arc_eviction_pct 的默认值为 200%,表示在内存不足时,为每 2KB 释放内存,1KB 可被重新分配使用。增大该值(如 300%-400%)将加快 ARC 在高负载后的释放速度。此设置会增加 ARC
    清理时释放的内存总量,从而有效释放更多的内存​( TrueNAS Open Enterprise Storage
    1 50% ARC 每次收缩当前大小的 50%,即一半。
    2 25%
    3 12.5%
    4 6.25%
    5 3.125%
    6 1.5625%
    7 0.78125%

将 zfs_arc_eviction_pct 设置为 300 或 400,确保在密集 IO 操作后有更快速的缓存释放。

  1. zfs_arc_shrink_shift zfs_arc_shrink_shift 默认值为 7,意味着在内存紧张时,ARC 缩减速率约为 0.8%。降低该值(如设为 4-5)会更激进地减少 ARC 缓存的大小,适合在内存频繁短缺时使用​

设置 zfs_arc_shrink_shift 为 4 或 5,以实现较为激进的内存释放,确保在高负载后更快腾出内存。

  1. zfs_arc_sys_free 此参数决定系统应该保留多少空闲内存。默认为系统物理内存的 1/64 或 512KB,适当增大该值可以让 ARC 更积极地释放缓存,保证系统有更充足的可用内存​( TrueNAS Open Enterprise
    Storage

如果有 14GB 总内存,可以设置 zfs_arc_sys_free 为
268435456(256MB)或更大,这样可以在高内存需求时保留较多的空闲内存,防止 ARC 占用过多​

echo 300 > /sys/module/zfs/parameters/zfs_arc_eviction_pct
echo 4 > /sys/module/zfs/parameters/zfs_arc_shrink_shift
echo 1073741824 > /sys/module/zfs/parameters/zfs_arc_sys_free
cat /sys/module/zfs/parameters/zfs_arc_eviction_pct
cat /sys/module/zfs/parameters/zfs_arc_shrink_shift
cat /sys/module/zfs/parameters/zfs_arc_sys_free

对于24.10可以创建服务

[Unit]
Description=Set ZFS Parameters
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'echo 4 | sudo tee /sys/module/zfs/parameters/zfs_arc_shrink_shift;echo 469762048 | sudo tee /sys/module/zfs/parameters/zfs_arc_sys_free'


[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable
systemctl start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值