From 266b181e7594592e6db63b5e22584373585922ef Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 20 Sep 2017 09:36:17 -0700 Subject: [PATCH] Increase default arc_c_min Increase the default arc_c_min value to which whichever is larger, either 32M or 1/32 of total system memory. This is advantageous for systems with more than 1G of memory where performance issues may occur when the ARC is allowed to collapse below a minimum size. At the same time we want to use the bare minimum value which is still functional so the filesystem can be used in very low memory environments. Reviewed-by: Tim Chase Reviewed-by: George Melikov Reviewed-by: Giuseppe Di Natale Signed-off-by: Brian Behlendorf Closes #6659 --- module/zfs/arc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/module/zfs/arc.c b/module/zfs/arc.c index fe47d714a..0a09c443b 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -6508,16 +6508,17 @@ arc_init(void) /* Set max to 1/2 of all memory */ arc_c_max = allmem / 2; +#ifdef _KERNEL + /* Set min cache to 1/32 of all memory, or 32MB, whichever is more */ + arc_c_min = MAX(allmem / 32, 2ULL << SPA_MAXBLOCKSHIFT); +#else /* * In userland, there's only the memory pressure that we artificially * create (see arc_available_memory()). Don't let arc_c get too * small, because it can cause transactions to be larger than * arc_c, causing arc_tempreserve_space() to fail. */ -#ifndef _KERNEL arc_c_min = MAX(arc_c_max / 2, 2ULL << SPA_MAXBLOCKSHIFT); -#else - arc_c_min = 2ULL << SPA_MAXBLOCKSHIFT; #endif arc_c = arc_c_max;