ZFS and overcommitted resources

imrazor

Member
Nov 3, 2015
40
0
6
I've successfully built a Debian 9 host with Proxmox and ZFS. My understanding is that with the availability of resource sharing (e.g., "balloon" memory) it is common to overcommit resources. In other words, on a machine with 64GB, with several VMs running the same OS, I might be able to get away with assigning 72GB of RAM to all those VMs without performance degradation. Likewise, I might be able to assign more vCPUs than I have threads assuming that not all VMs will be hitting 100% cpu usage at the same time.

But ZFS is very sensitive to memory usage, and possibly CPU availability. Is it a good idea to make sure at least one or two threads, and a few gigs of RAM is available for ZFS? In other words, is overcommiting RAM or CPU resources a bad idea if you're running ZFS on the same host?
 
You can not over commit the RAM allocated to zfs. zfs has a min memory and max memory allocation. So the OS can not use at least minimum RAM allocated from zfs.
So your any VM/process can not use the minimum RAM allready alocated for zfs.

Also you must think that the OS himself need some RAM and cpu. I can guess that 1 GB can be a minimum for OS only.

As a conclusion, if you run under OS minimum + zfs minimum, then yes, your VM/CT will can run, but with a very bad performance. If this will happen for 2-5 seconds period, it could be ok (swap could help in this short period if the swapped memory is not so high). Also a shorter zfs flush period could help (2-3 seconds insted of 5 by default)

But on medium term a lower RAM for zfs will make a less performance for zfs.