ZFS: unlimited arc cache growth?

Dan Nelson dnelson at allantgroup.com
Fri Apr 17 21:14:00 UTC 2009


In the last episode (Apr 17), Bernd Walter said:
> On Fri, Apr 17, 2009 at 06:28:29PM +0200, Marius Nünnerich wrote:
> > On Fri, Apr 17, 2009 at 16:18, Bernd Walter <ticso at cicely7.cicely.de> wrote:
> > > On Fri, Apr 17, 2009 at 02:50:24PM +0200, Alexander Leidinger wrote:
> > >> I monitored (by hand) a while the sysctls
> > >> kstat.zfs.misc.arcstats.size and kstat.zfs.misc.arcstats.hdr_size. 
> > >> Both grow way higher (at some point I've seen more than 500M) than
> > >> what I have configured in vfs.zfs.arc_max (40M).
> > >
> > > My understanding about this is the following: vfs.zfs.arc_min/max are
> > > not used as min max values.  They are used as high/low watermarks.  If
> > > arc is more than max the arc a thread is triggered to reduce the arc
> > > cache until min, but in the meantime other threads can still grow arc
> > > so there is a race between them.
> > 
> > Hmm, if this is true the ARC size should go down to arc_min once it did
> > grow past arc_max and no new data is coming along but I do not observe
> > such a thing here.  It simply stays near but below arc_max here all the
> > time.  I have only /home on ZFS with moderate load.
> 
> I had a few ideas why this could be, but scanning complete sys showed no
> point at all where arc_min is used.  There are formular to set this value,
> but that's all I find.

zfs_arc_{min,max} are just tunables.  The real variables arc_c_{min,max} get
autosized and then capped to {min,max} in uts/common/fs/zfs/arc.c:arc_init() .

-- 
	Dan Nelson
	dnelson at allantgroup.com


More information about the freebsd-current mailing list