Does anybody have an idea about why arc_c_min is pulled up to a half of
arc_meta_limit?

if (arc_c_min < arc_meta_limit / 2 && zfs_arc_min == 0)
        arc_c_min = arc_meta_limit / 2;

It's not very obvious that zfs_arc_meta_limit tuning should have this effect on
arc_c_min (if zfs_arc_min is not explicitly tuned).

The code was added very long time ago and I can not see any explanation for this
particular change in the commit that introduced arc_meta_limit:

commit 0e8c61582669940ab28fea7e6dd2935372681236
Author: maybee <none@none>
Date:   Thu May 24 11:30:57 2007 -0700

    6542676 ARC needs to track meta-data memory overhead
    6544743 state->arcs_size >= state->arcs_lsize (0xe8046200 >= 0xe8066200)

P.S.
Why a default value of arc_meta_limit is 1/4th arc_c_max and, thus, why by
default arc_c_min ends up being 1/8th of arc_c_max is a different topic.  But,
IMHO, the following value, while as arbitrary, made more sense:
        /* set min cache to 1/32 of all memory, or 64MB, whichever is more */
        arc_c_min = MAX(arc_c / 4, 64<<20);

-- 
Andriy Gapon
_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to