Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use wmsum for arc, abd, dbuf and zfetch statistics. #12172

Merged
merged 1 commit into from
Jun 17, 2021

Conversation

amotin
Copy link
Member

@amotin amotin commented Jun 1, 2021

wmsum was designed exactly for cases like these with many updates
and rare reads. It allows to completely avoid atomic operations on
congested global variables.

How Has This Been Tested?

On 40-thread FreeBSD system heavy uncached 4KB reads from 8 ZVOLs show 3-5% IOPS increase. Profiles show less time spent on random bookkeeping.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Performance enhancement (non-breaking change which improves efficiency)
  • Code cleanup (non-breaking change which makes code smaller or more readable)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Library ABI change (libzfs, libzfs_core, libnvpair, libuutil and libzfsbootenv)
  • Documentation (a change to man pages or other documentation)

Checklist:

@amotin amotin added the Status: Code Review Needed Ready for review and testing label Jun 1, 2021
@amotin amotin requested a review from pcd1193182 June 2, 2021 20:45
Copy link
Contributor

@behlendorf behlendorf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. It's nice to see these switched over!

module/zfs/dbuf.c Outdated Show resolved Hide resolved
include/sys/arc_impl.h Outdated Show resolved Hide resolved
include/sys/arc_impl.h Outdated Show resolved Hide resolved
module/zfs/arc.c Outdated Show resolved Hide resolved
wmsum was designed exactly for cases like these with many updates
and rare reads.  It allows to completely avoid atomic operations on
congested global variables.

Signed-off-by: Alexander Motin <[email protected]>
Sponsored-By: iXsystems, Inc.
@mmaybee mmaybee added Status: Accepted Ready to integrate (reviewed, tested) and removed Status: Code Review Needed Ready for review and testing labels Jun 16, 2021
@mmaybee mmaybee self-requested a review June 16, 2021 13:22
@mmaybee mmaybee merged commit c4c162c into openzfs:master Jun 17, 2021
@mmatuska
Copy link
Contributor

I am opting for having this in zfs-2.1-release

behlendorf pushed a commit that referenced this pull request Jun 24, 2021
wmsum was designed exactly for cases like these with many updates
and rare reads.  It allows to completely avoid atomic operations on
congested global variables.

Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Mark Maybee <[email protected]>
Signed-off-by: Alexander Motin <[email protected]>
Sponsored-By: iXsystems, Inc.
Closes #12172
@amotin amotin deleted the wmsum_use branch August 24, 2021 20:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Accepted Ready to integrate (reviewed, tested)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants