ZFS allocates 1 GB of data every TB of physical disc space (since you lose some to parity). You may learn more about how ZFS works by checking out this blog post. 16 GB RAM is needed for every 16 TB of hard drive space.
ZFS requires a minimum of 8 GB of RAM, depending on usage.
ZFS will show less free memory than UFS, for example. Freemen refers to the UFS page cache. ‘Cache’ is returned only when memory is required. If this is the case, you’ll have less free memory, but you won’t be affected by it.
In the days of Solaris 2.6 and 7, we saw a roller coaster effect on free memory that resulted in sub-par application performance. This way of operation does not bring us back. ZFS does not suffer from this issue. The memory reaper couldn’t tell the difference between a useful application page and a cached page from the UFS. That was a calamitous oversight. ZFS does not cause this problem by releasing its cache.
When the kemp subsystem is under back pressure from kernel modules, ZFS is designed to relinquish part of its memory. It was recently discovered that some kernel code was not appropriately exerting that pressure (short description here: 4034947).
If you’re using ZFS, you may notice that it uses extra RAM when writing to pages that aren’t mapped. Instead of paging data that is read or written, ZFS uses a different mechanism to handle it. However, mapped I/O, which is intimately linked to the Virtual Memory subsystem, still uses the conventional paging code. So, writing to mapped pages means that we’ll store two copies of the data associated with the syscall at least until we can transfer the data to disc. A considerable amount of ram is unlikely to be required for such a task.
Finally, ZFS’s throttling of writers will be significantly different from UFS’s. Prior to a few months ago, we throttled processes that attempted to write to files with more than 0.5 MB of I/O pending. A recent increase to 16 MB was made to this restriction. Using such throttling, we can keep applications from focusing on just one file or using up an excessive amount of system resources. As a result, when memory is abundant, we may be forcing a program to run slower than it would otherwise.
Individual applications will not be slowed down by ZFS. Using a mutually agreed-upon strategy, we throttle all running programs to allow the I/O subsystem to catch up with the global data load, which typically takes 5 to 10 seconds. As a result, applications have access to far more memory before being throttled.
It’s possible that this is the reason why ZFS prefers a lot of RAMS. ZFS, on the whole, requires the same amount of RAM as any other filesystem to store a little quantity of data. ZFS, on the other hand, now allows applications to run much more independently of the I/O system. There are some loads that could benefit greatly from this, but there are also some that will appear to use more memory.
Recommended Readings (Visualr)