Skip to content

docs: design per-session io_uring ring pool footprint controls#4014

Merged
oferchen merged 1 commit into
masterfrom
docs/io-uring-ring-pool-design-1936
May 13, 2026
Merged

docs: design per-session io_uring ring pool footprint controls#4014
oferchen merged 1 commit into
masterfrom
docs/io-uring-ring-pool-design-1936

Conversation

@oferchen
Copy link
Copy Markdown
Owner

Summary

Survey highlights

  • Production receiver builds at most one ring per transfer via IoUringDiskBatch::try_new in crates/transfer/src/disk_commit/thread.rs:78.
  • Defaults: 64 SQ entries, 64 KiB buffers, 8 registered buffers (crates/fast_io/src/io_uring/config.rs:368) - approximately 520 KiB pinned per ring, up to 4 MiB under for_large_files() presets.
  • --dry-run and list-only modes already bypass the disk thread via run_dry_run_loop (crates/transfer/src/receiver/transfer/pipeline.rs:401) so they construct no ring today.

Migration plan

R1-R4 are independent; each can ship as its own PR. Suggested order is R1 (lazy construction) -> R2 (adaptive buffer count) -> R3 (soft cap) -> R4 (doc-only probe-cache invariant).

Test plan

  • Doc-only change; no code touched.
  • All citations validated against current master.
  • Reviewer sanity-checks the file:line references on their tree.

Adds the per-session ring pool design that focuses on reducing
per-process io_uring memory cost when many oc-rsync invocations run
concurrently. Surveys current ring construction, names the four
in-scope levers (lazy ring construction, adaptive registered-buffer
count, soft cap via CLI/env, probe-cache invariant), and sequences
them as independent PRs.
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label May 13, 2026
@oferchen oferchen merged commit c3c77b9 into master May 13, 2026
8 checks passed
@oferchen oferchen deleted the docs/io-uring-ring-pool-design-1936 branch May 14, 2026 14:57
oferchen added a commit that referenced this pull request May 18, 2026
#4014)

Adds the per-session ring pool design that focuses on reducing
per-process io_uring memory cost when many oc-rsync invocations run
concurrently. Surveys current ring construction, names the four
in-scope levers (lazy ring construction, adaptive registered-buffer
count, soft cap via CLI/env, probe-cache invariant), and sequences
them as independent PRs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant