From 887a3c533b94a4b70075e310f15c45b9dee19410 Mon Sep 17 00:00:00 2001 From: shodanshok Date: Thu, 9 Nov 2023 01:30:47 +0100 Subject: [PATCH] Increase L2ARC write rate and headroom Current L2ARC write rate and headroom parameters are very conservative: l2arc_write_max=8M and l2arc_headroom=2 (ie: a full L2ARC writes at 8 MB/s, scanning 16/32 MB of ARC tail each time; a warming L2ARC runs at 2x these rates). These values were selected 15+ years ago based on then-current SSDs size, performance and endurance. Today we have multi-TB, fast and cheap SSDs which can sustain much higher read/write rates. For this reason, this patch increases l2arc_write_max to 32M and l2arc_headroom to 8 (4x increase for both). Reviewed-by: Brian Behlendorf Reviewed-by: Alexander Motin Signed-off-by: Gionatan Danti Closes #15457 --- man/man4/zfs.4 | 6 +++--- module/zfs/arc.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/man/man4/zfs.4 b/man/man4/zfs.4 index 574558f9d8ba..4a0441ed9469 100644 --- a/man/man4/zfs.4 +++ b/man/man4/zfs.4 @@ -97,7 +97,7 @@ and only applicable in related situations. .It Sy l2arc_feed_secs Ns = Ns Sy 1 Pq u64 Seconds between L2ARC writing. . -.It Sy l2arc_headroom Ns = Ns Sy 2 Pq u64 +.It Sy l2arc_headroom Ns = Ns Sy 8 Pq u64 How far through the ARC lists to search for L2ARC cacheable content, expressed as a multiplier of .Sy l2arc_write_max . @@ -200,12 +200,12 @@ to enable caching/reading prefetches to/from L2ARC. .It Sy l2arc_norw Ns = Ns Sy 0 Ns | Ns 1 Pq int No reads during writes. . -.It Sy l2arc_write_boost Ns = Ns Sy 8388608 Ns B Po 8 MiB Pc Pq u64 +.It Sy l2arc_write_boost Ns = Ns Sy 33554432 Ns B Po 32 MiB Pc Pq u64 Cold L2ARC devices will have .Sy l2arc_write_max increased by this amount while they remain cold. . -.It Sy l2arc_write_max Ns = Ns Sy 8388608 Ns B Po 8 MiB Pc Pq u64 +.It Sy l2arc_write_max Ns = Ns Sy 33554432 Ns B Po 32 MiB Pc Pq u64 Max write bytes per interval. . .It Sy l2arc_rebuild_enabled Ns = Ns Sy 1 Ns | Ns 0 Pq int diff --git a/module/zfs/arc.c b/module/zfs/arc.c index dc2dd63b3d99..2d08cc5e7240 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -776,8 +776,8 @@ uint64_t zfs_crc64_table[256]; * Level 2 ARC */ -#define L2ARC_WRITE_SIZE (8 * 1024 * 1024) /* initial write max */ -#define L2ARC_HEADROOM 2 /* num of writes */ +#define L2ARC_WRITE_SIZE (32 * 1024 * 1024) /* initial write max */ +#define L2ARC_HEADROOM 8 /* num of writes */ /* * If we discover during ARC scan any buffers to be compressed, we boost