summaryrefslogtreecommitdiffstats
path: root/module/zfs/arc.c
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2013-07-23 15:33:23 -0700
committerBrian Behlendorf <[email protected]>2014-02-21 14:52:02 -0800
commit914158259225d9723bbb288457797936b41d3c9a (patch)
treea165010eee27795c73faedaeefee1a2853adc5a4 /module/zfs/arc.c
parent3965d2e6ee3ce3ef646c29736ce311695fd8ebc3 (diff)
Set zfs_arc_min to 4MB
Decrease the mimimum ARC size from 1/32 of total system memory (or 64MB) to a much smaller 4MB. 1) Large systems with over a 1TB of memory are being deployed and reserving 1/32 of this memory (32GB) as the mimimum requirement is overkill. 2) Tiny systems like the raspberry pi may only have 256MB of memory in which case 64MB is far too large. The ARC should be reclaimable if the VFS determines it needs the memory for some other purpose. If you want to ensure the ARC is never completely reclaimed due to memory pressure you may still set a larger value with zfs_arc_min. Signed-off-by: Brian Behlendorf <[email protected]> Signed-off-by: Prakash Surya <[email protected]> Issue #2110
Diffstat (limited to 'module/zfs/arc.c')
-rw-r--r--module/zfs/arc.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/module/zfs/arc.c b/module/zfs/arc.c
index cbe0a6028..11839af59 100644
--- a/module/zfs/arc.c
+++ b/module/zfs/arc.c
@@ -4025,8 +4025,8 @@ arc_init(void)
spl_register_shrinker(&arc_shrinker);
#endif
- /* set min cache to 1/32 of all memory, or 64MB, whichever is more */
- arc_c_min = MAX(arc_c / 4, 64<<20);
+ /* set min cache to zero */
+ arc_c_min = 4<<20;
/* set max to 1/2 of all memory */
arc_c_max = arc_c * 4;
@@ -4036,7 +4036,7 @@ arc_init(void)
*/
if (zfs_arc_max > 64<<20 && zfs_arc_max < physmem * PAGESIZE)
arc_c_max = zfs_arc_max;
- if (zfs_arc_min > 64<<20 && zfs_arc_min <= arc_c_max)
+ if (zfs_arc_min > 0 && zfs_arc_min <= arc_c_max)
arc_c_min = zfs_arc_min;
arc_c = arc_c_max;
@@ -4050,9 +4050,6 @@ arc_init(void)
if (zfs_arc_meta_limit > 0 && zfs_arc_meta_limit <= arc_c_max)
arc_meta_limit = zfs_arc_meta_limit;
- if (arc_c_min < arc_meta_limit / 2 && zfs_arc_min == 0)
- arc_c_min = arc_meta_limit / 2;
-
/* if kmem_flags are set, lets try to use less memory */
if (kmem_debugging())
arc_c = arc_c / 2;