HomeFreeBSD

Add DB_RF_NOPREFETCH to dbuf_read()s in dnode.c

Description

Add DB_RF_NOPREFETCH to dbuf_read()s in dnode.c

Prefetching of dnodes in dbuf_read() can cause significant mutex
contention for some workloads and isn't very helpful. This is
because we already get 32 dnodes for each block read, and when
iterating over a directory we prefetch the dnodes in the directory.
Disable this prefetching to prevent the lock contention.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Submitted-by: Adam Moss <c@yotes.com>
Submitted-by: Matthew Ahrens <mahrens@delphix.com>
Signed-off-by: Adam Moss <c@yotes.com>
Closes #10877
Closes #10953

Details

Provenance
Adam D. Moss <c@yotes.com>Authored on Sep 25 2020, 8:49 PM
GitHub <noreply@github.com>Committed on Sep 25 2020, 8:49 PM
Parents
rG2e407941a214: Fix PREEMPTION=y and BLK_CGROUP=y config on arm64
Branches
Unknown
Tags
Unknown

Event Timeline

GitHub <noreply@github.com> committed rGacfd2d4641a1: Add DB_RF_NOPREFETCH to dbuf_read()s in dnode.c (authored by Adam D. Moss <c@yotes.com>).Sep 25 2020, 8:49 PM