查看当前 ARC 大小 (GB)
cat /proc/spl/kstat/zfs/arcstats | grep -E "^size" | awk '{print $3}' | numfmt --to=iec --from-unit=1
查看 ARC 最大和最小限制 (GB)
cat /proc/spl/kstat/zfs/arcstats | grep -E "^c_max|^c_min" | awk '{print $1, $3}' | while read name val; do echo "name (numfmt --to=iec --from-unit=1 $val)"; done
创建或编辑 ZFS 配置文件
sudo nano /etc/modprobe.d/zfs.conf
添加或修改配置行
将 ARC 最小内存限制设置为 8GB
options zfs zfs_arc_min=8589934592
将 ARC 最大内存限制设置为 16GB
options zfs zfs_arc_max=17179869184
crtl+x 保持 y enter回车确定保存
释放内存的缓存占用的
zfs set primarycache=none pool_name
设置 ARC 大小范围为 160-200 GiB,并为操作系统保留 16 GiB 空闲
options zfs zfs_arc_max=214748364800
options zfs zfs_arc_min=171798691840
options zfs zfs_arc_sys_free=17179869184
设置元数据对用户数据优先级的权重为 20x (OpenZFS 2.2+)
options zfs zfs_arc_meta_balance=2000
允许 dnode 占用至多 80% 的 ARC 容量
options zfs zfs_arc_dnode_limit_percent=80
以下几行参见 man page 中的 "ZFS I/O Scheduler" 一节
options zfs zfs_vdev_async_read_max_active=8
options zfs zfs_vdev_async_read_min_active=2
options zfs zfs_vdev_scrub_max_active=5
options zfs zfs_vdev_max_active=20000
避免因内存压力降低 ARC 读写速度
options zfs zfs_arc_lotsfree_percent=0
L2ARC 参数
options zfs l2arc_headroom=8
options zfs l2arc_write_max=67108864
options zfs l2arc_noprefetch=0