Nobody ever said well I plugged an 20TB external hard drive so I better plug in a few more sticks of RAM so that works.
Dedup needs RAM in proportion to storage because for each duplicate block it maintains an entry in an in memory table.
Nobody ever said well I plugged an 20TB external hard drive so I better plug in a few more sticks of RAM so that works.
Dedup needs RAM in proportion to storage because for each duplicate block it maintains an entry in an in memory table.
All file systems have metadata which is good to keep in memory. Building several 50+TB NAS boxes recently, it isn’t just ZFS either. And it isn’t some sort of linear performance penalties sometimes when you don’t have enough RAM. It can be kernel panics, exponential decay in performance, etc.
Can you quantify what you are saying. What OS/filesystem? What minimum RAM requirements for what amount of storage?
seems like no one is building these larger systems on boxes small enough for it to matter, or at least google isn’t finding it.
However specific implementations can indeed have memory requirements that scale in relation to storage capacity. For example, if the implementation keeps the bitmap of free space in memory, then more storage = larger bitmap = more memory required.
There's been several attempts in ZFS to reduce memory overhead. I'm pretty sure that if you took a decade old version of ZFS you'd struggle to run it on a system with 512MB RAM.
ZFS does complain that the minimum recommended memory is 512MB and that I can expect unstable behavior. However basic file I/O seems to work, I copied some multi-GB files around and such without issues.
So seems the bare minimum was lower than I recalled, at least on a plain system.
A proper test would include heavily fragmenting the pool, and preferably with more vdevs. But it's something.
I don't follow FreeBSD closely, but if memory serves there was a concern, particularly in the early days of the ZFS port, that their implementation couldn't be counted on to release RAM fast enough, if the system suddenly came under significant memory pressure. Hence the advice was to always run with more-than-sufficient RAM to minimize the likelihood of getting into low memory situations. I think this is a significant part of why FreeNAS considers 8GB to be the minimum supported configuration.
So it seems to me that this isn't really about ZFS's RAM requirement, rather it's about hedging against the volatility of the RAM requirements of other software on the same box, in case ZFS can't back off fast enough.
These days I run ZFS on Linux, and I remember about 4 years back spinning up some bulk data processing job that was configured to use 14GB of RAM, on a 16GB box, and watching ZFS's ARC RAM use drop in a single second from 5.5GB to 0.5GB. So I'm satisfied that for my purposes, on ZoL in recent times, this isn't an issue I need to worry about.
ZFS releases ARC memory as the memory pressure from applications running on the system increases; it's been that way since day 1.
I will agree that ZFS should handle large pools once you clear the ~fixed minimum memory requirement.