Skip to content

feat(driver): expose per-shard io-wq registration results - #17

Merged
houseme merged 2 commits into
mainfrom
houseme/uring-iowq-status
Sep 23, 2026
Merged

houseme merged 2 commits into
mainfrom
houseme/uring-iowq-status

Conversation

@houseme

@houseme houseme commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

Related Issues

Related to rustfs/backlog#2647, step 4.2.iowq. This reports the existing io-wq startup request; it does not change worker limits or close the application-wide budget item.

Summary of Changes

  • Capture each shard's existing [16, 0] io-wq registration request and result during startup.
  • Expose shard_iowq_setup() in shard order. Successful registration records the kernel-returned previous limits; failure records the I/O error kind and optional errno.
  • Keep best-effort startup, probing, reads, and fallback behavior unchanged. The query copies stored values without a new kernel call or per-read work.
  • Add injected success/error tests, a native two-shard read and snapshot test, and an operational contract.

Verification

  • Linux-target cargo check --locked --all-targets --all-features passed.
  • Linux-target cargo clippy --locked --all-targets --all-features -- -D warnings passed.
  • Default library check and default/all-feature warning-denying rustdoc passed.
  • cargo fmt --all --check and git diff --check passed.
  • Two independent reviews of the complete code, tests, and documentation found no blocking issue.
  • CI at 193ab21 passed all three jobs: 147 native all-feature tests, mandatory O_DIRECT, ordered-prefetch and both benchmark correctness smokes, and restricted/unrestricted Docker coverage. The new three injected unit tests and two-shard native test executed with no skip. The documentation-only final head 2b79358 also passed all three CI jobs.

Impact

Registration still requests sixteen bounded workers per NUMA node and leaves the unbounded class unchanged. Failure remains nonfatal. The recorded previous limits are historical values, not effective limits or active worker counts; no process-wide cap or performance gain is claimed. Existing constructors and dependency features are unchanged.

Additional Notes

This PR is independently revertible. No data or configuration migration is required. Application dependency wiring, result memory limits, and resource-isolated performance acceptance remain separate work.

houseme and others added 2 commits September 23, 2026 10:01
Co-Authored-By: heihutu <heihutu@gmail.com>

Co-Authored-By: zhi22915 <qiuzgang@gmail.com>
Co-Authored-By: heihutu <heihutu@gmail.com>

Co-Authored-By: zhi22915 <qiuzgang@gmail.com>
@houseme
houseme marked this pull request as ready for review September 23, 2026 02:16
@houseme
houseme merged commit fafd405 into main Sep 23, 2026
3 checks passed
@houseme
houseme deleted the houseme/uring-iowq-status branch September 23, 2026 02:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant