HomeFreeBSD

More aggsum optimizations

Description

More aggsum optimizations

  • Avoid atomic_add() when updating as_lower_bound/as_upper_bound.

Previous code was excessively strong on 64bit systems while not
strong enough on 32bit ones. Instead introduce and use real
atomic_load() and atomic_store() operations, just an assignments
on 64bit machines, but using proper atomics on 32bit ones to avoid
torn reads/writes.

  • Reduce number of buckets on large systems. Extra buckets not as

much improve add speed, as hurt reads. Unlike wmsum for aggsum
reads are still important.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored-By: iXsystems, Inc.
Closes #12145

Details

Provenance
mavAuthored on Jun 7 2021, 4:02 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Jun 9 2021, 8:05 PM
Parents
rGb05ae1a82ab6: libzfs: write_inuse_diffs_one: format strerror() with "%s"
Branches
Unknown
Tags
Unknown