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

zvol_os.c: Increase optimal IO size #16750

Merged
merged 1 commit into from
Nov 14, 2024

Conversation

ixhamza
Copy link
Member

@ixhamza ixhamza commented Nov 13, 2024

Motivation and Context

Since zvol read and write can process up to (DMU_MAX_ACCESS / 2) bytes in a single operation, the current optimal I/O size is too low. SCST directly reports this value as the optimal transfer length for the target SCSI device. Increasing it from the previous volblocksize value results in performance improvement for large block parallel I/O workloads.

Description

How Has This Been Tested?

  • CI Testing
  • Our perf team validated performance improvement for large block parallel I/O workloads

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 Nov 13, 2024
@ixhamza ixhamza force-pushed the zvol-update-io-opt-upstream branch from f8a5c09 to 15e98fb Compare November 13, 2024 17:13
Since zvol read and write can process up to (DMU_MAX_ACCESS / 2) bytes
in a single operation, the current optimal I/O size is too low. SCST
directly reports this value as the optimal transfer length for the
target SCSI device. Increasing it from the previous volblocksize results
in performance improvement for large block parallel I/O workloads.

Signed-off-by: Ameer Hamza <ahamza@ixsystems.com>
@ixhamza ixhamza force-pushed the zvol-update-io-opt-upstream branch from 15e98fb to ba1f9e1 Compare November 13, 2024 17:15
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.

This makes good sense. There's no good reason to limit this more than we have too.

@behlendorf behlendorf added Status: Accepted Ready to integrate (reviewed, tested) and removed Status: Code Review Needed Ready for review and testing labels Nov 13, 2024
@github-actions github-actions bot removed the Status: Accepted Ready to integrate (reviewed, tested) label Nov 13, 2024
@amotin amotin added the Status: Accepted Ready to integrate (reviewed, tested) label Nov 13, 2024
@behlendorf behlendorf merged commit 3462f3b into openzfs:master Nov 14, 2024
22 of 24 checks passed
behlendorf pushed a commit to behlendorf/zfs that referenced this pull request Nov 15, 2024
Since zvol read and write can process up to (DMU_MAX_ACCESS / 2) bytes
in a single operation, the current optimal I/O size is too low. SCST
directly reports this value as the optimal transfer length for the
target SCSI device. Increasing it from the previous volblocksize results
in performance improvement for large block parallel I/O workloads.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: Ameer Hamza <ahamza@ixsystems.com>
Closes openzfs#16750
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.

3 participants