Lower ZFS ARC max size Proxmox by setting zfs_arc_max in /etc/modprobe.d/zfs.conf. Then run update-initramfs -u and reboot. That’s the whole fix — but the reboot part is where people get lost.

Why bother
ZFS eats RAM. By default it’ll take up to half your system memory for ARC, which is fine on a dedicated NAS but dumb on a Proxmox host running VMs and LXC containers. You want that RAM for guests, not for caching a disk that’s already fast.
The edit
Create or edit /etc/modprobe.d/zfs.conf:
options zfs zfs_arc_max=8589934592
That’s 8 GiB. Change the number to whatever you want in bytes. Some people use 4 GiB (4294967296) or 16 GiB (17179869184). I’d go lower than you think — ZFS still works fine with a small ARC, it just caches less.

Make it stick
Here’s the part generic ZFS docs skip: on Proxmox you have to update the initramfs or the setting won’t survive a reboot.
update-initramfs -u
Then reboot. Yes, reboot. You can try unloading the module and reloading it, but that’s a pain with ZFS pools mounted. Just reboot the host.
Verify
After reboot, check the current limit:
cat /sys/module/zfs/parameters/zfs_arc_max
It should show your number. Or run arc_summary and look at the “ARC size” section. If it still shows the old value, you forgot the initramfs step.
My take
Don’t overthink this. Set a reasonable cap, update initramfs, reboot. If you’re running Proxmox with ZFS and seeing high memory usage, this is the first thing to do. It’s also worth checking if you even need ZFS — for a lot of homelab setups, ext4 or XFS on LVM is simpler and leaves more RAM for VMs. But if you want snapshots and replication, ZFS is great; just cap the ARC.
And if you’re doing live migrations with ZFS, watch the memory dirty rate — it can slow things down more than the network. See Live Migrations Get Slower Over Time.