]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Compact dbuf/buf hashes and lock arrays
authorAlexander Motin <mav@FreeBSD.org>
Thu, 1 Jul 2021 15:30:31 +0000 (11:30 -0400)
committerTony Hutter <hutter2@llnl.gov>
Tue, 14 Sep 2021 19:22:46 +0000 (12:22 -0700)
commit15177c1aac9f3c1b23523d021e854da71e15e529
tree118df00a3aee35349893f4401b8e1048973d21c3
parent035219ee10b19713130134d22a0ff7b7d7b85f94
Compact dbuf/buf hashes and lock arrays

With default dbuf cache size of 1/32 of ARC, it makes no sense to have
hash table of the same size (or even bigger on Linux).  Reduce it to
1/8 of ARC's one, still leaving some slack, assuming higher I/O rate
via dbuf cache than via ARC.

Remove padding from ARC hash locks array.  The idea behind padding
is to avoid false sharing between locks.  It would have sense if
there would be a limited number of very busy locks.  But since we
have no limit on the number, using the same memory for more locks we
can achieve even lower lock contention with the same false sharing,
or we can use less memory for the same contention level.

Reduce number of hash locks from 8192 to 2048.  The number is still
big enough to not cause contention, but reduced memory size improves
cache hit rate for mutex_tryenter() in ARC eviction thread, saving
about 1% of the thread time.

Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Closes #12289
include/sys/dbuf.h
module/zfs/arc.c
module/zfs/dbuf.c