Quote:
Originally Posted by
jlliagre
...
- ZFS memory is released asynchronously and gradually by observing RAM demand while other file system's memory is released synchronously and (almost) instantaneously. Where that matters is when an application requests a very large amount of non pageable memory as the allocation might fail. The arc_max tuning prevents ZFS to use all the RAM helping these allocations to succeed.
A little late here, but...
It's much worse than that on a server running Oracle database instance(s). The ZFS ARC does not play nice with Oracle databases. At all:
1. ZFS ARC expands to use all free memory - as 4k pages.
2. Oracle DB has a transient demand for memory - but it requests large pages (4 MB IIRC).
3. Entire server comes to an effective screeching halt while VM management is hung coalescing large pages.
4. Oracle DB releases the large pages, ZFS ARC grabs them and fragments them.
5. Repeat.
If the server is used just as a database server, limit the ARC to under 1 GB, if not smaller. After rebooting, check to be sure the ARC is actually limited to what you specified - if you go too small your limit will be ignored.