aboutsummaryrefslogtreecommitdiffstats
path: root/module/os/linux
diff options
context:
space:
mode:
authorRyan Moeller <[email protected]>2020-03-27 12:14:46 -0400
committerGitHub <[email protected]>2020-03-27 09:14:46 -0700
commit9a51738b60c2164822baefa17f8fdcebe9d82fbc (patch)
treea16926d3b550160a937d533e41a6651b6f3ad6c8 /module/os/linux
parent3f38797338f2e4b16e8e0065e21f1bca6ef59784 (diff)
Let default arc_c_max be platform dependent
Linux changed the default max ARC size to 1/2 of physical memory to deal with shortcomings of the Linux SLUB allocator. Other platforms do not require the same logic. Implement an arc_default_max() function to determine a default max ARC size in platform code. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Ryan Moeller <[email protected]> Closes #10155
Diffstat (limited to 'module/os/linux')
-rw-r--r--module/os/linux/zfs/arc_os.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/module/os/linux/zfs/arc_os.c b/module/os/linux/zfs/arc_os.c
index 1e0cabd0a..bff0f0517 100644
--- a/module/os/linux/zfs/arc_os.c
+++ b/module/os/linux/zfs/arc_os.c
@@ -60,6 +60,16 @@
int64_t last_free_memory;
free_memory_reason_t last_free_reason;
+/*
+ * Return a default max arc size based on the amount of physical memory.
+ */
+uint64_t
+arc_default_max(uint64_t min, uint64_t allmem)
+{
+ /* Default to 1/2 of all memory. */
+ return (MAX(allmem / 2, min));
+}
+
#ifdef _KERNEL
/*
* Return maximum amount of memory that we could possibly use. Reduced