Bug #13095
openZFS ARC minimum size is too large
0%
Description
The ARC will shrink in response to memory pressure, but will stop doing so once it hits arc_c_min
. That value starts at 1/32nd of the total memory in the system, with a minimum value of 64MB. On an 8GB system this would result in a minimum size of 256MB. In arc_init()
, though, we then pull this up to be half of arc_meta_limit
which is generally larger. On a 32GB system, one would expect the minimum to be about 1GB, but:
> ::arc ! grep ^c c = 14993 MB c_min = 3442 MB c_max = 27543 MB
On an 8GB system, it ends up at almost 800MB. This is memory we cannot claw back by reaping when under severe memory pressure, which is more pronounced in smaller systems. The easy fix seems to be to just allow the first c_min
calculation to stand. We might even consider using the same value as lotsfree
here; i.e., 1/64 instead of 1/32, though retaining the 64MB floor.