summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2014-10-07 16:08:21 +0000
committeravg <avg@FreeBSD.org>2014-10-07 16:08:21 +0000
commite2d6ebec55f41f7360a1479231b139957f19dc26 (patch)
treef0ec701ab9c202cbc893e9da7e991999d6091c5e
parent9dd0ee9433e0e1a0f0baaa3f907dd207a0c9c8d4 (diff)
downloadFreeBSD-src-e2d6ebec55f41f7360a1479231b139957f19dc26.zip
FreeBSD-src-e2d6ebec55f41f7360a1479231b139957f19dc26.tar.gz
l2arc_write_buffers: reduce headroom value
FreeBSD has ARC_BUFC_NUMMETADATALISTS metadata lists and ARC_BUFC_NUMDATALISTS data lists (currently both are 16) while illumos has just a single list of each kind. headroom determines how much data is scanned on a single list during each run of the l2arc feed thread. Because FreeBSD has more lists we proportionally decrease the limit. Reviewed by: Brendan Gregg (earlier version) MFC after: 2 weeks Sponsored by: HybridCluster
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
index 1a1d4d8..60d2ff9 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
@@ -5047,7 +5047,7 @@ l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz,
if (ab == NULL)
ARCSTAT_BUMP(arcstat_l2_write_buffer_list_null_iter);
- headroom = target_sz * l2arc_headroom;
+ headroom = target_sz * l2arc_headroom * 2 / ARC_BUFC_NUMLISTS;
if (do_headroom_boost)
headroom = (headroom * l2arc_headroom_boost) / 100;
OpenPOWER on IntegriCloud