On 27/07/2023 13:47, Michael van Elst wrote:
Now I might be reading it wrong but that suggest to me that it would be an awful idea to run ZFS on a system that needs memory for things other than filesystem caching as there is no way for those memory needs to force ZFS to give up its pool usage.Swapping out userland pages is done much earlier, so with high ZFS utilization you end with a system that has a huge part of real memory allocated to the kernel. When you run out of swap (and processes already get killed), then you see some effects on kernel data.
If I've read it right there needs to be a mechanism for memory pressure to force ZFS to release memory. Doing it after all the processes have been swapped to disk is way too late as the chances are the system will become non-responsive by then. From memory this was a problem FreeBSD had to solve as well.
Even with the conventional BSD FFS I have to set vm.filemin and vm.filemax to quite low values to stop the kernel prioritizing file system cache over process memory and thats on a system with 16GB of RAM. Without that tuning I'd regularly have processes effectively rendered unresponsive as they were completely swapped out in favor of FS cache.
What's the equivalent lever for ZFS? Mike