HomeFreeBSD

DDT: Move logs searches out of the lock

Description

DDT: Move logs searches out of the lock

Postponing entry removal from the DDT log in case of hit till later
single-threaded sync stage allows to make ddl_tree stable during
multi-threaded ZIO processing stage. It allows to drop the DDT lock
before the search instead of after, reducing the contention a lot.

Actually ddt_log_update_entry() was already handling the case of
entry present in the active log, so we only need to remove it from
flushing log, if the entry happen to be there.

My tests with parallel 4KB block writes show throughput increase
from 480MB/s (122K blocks/s) to 827MB/s (212K blocks/s), even
though still limited by the global DDT lock contention.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alexander Motin <alexander.motin@TrueNAS.com>
Closes #18044

Details

Provenance
mavAuthored on Mon, Dec 15, 5:17 PM
GitHub <noreply@github.com>Committed on Mon, Dec 15, 5:17 PM
Parents
rG3d76ba27370b: Improve async destroy processing timing
Branches
Unknown
Tags
Unknown