Skip to content

docs(audits): Vec<FileEntry> vs upstream pool allocator (#1050)#3833

Merged
oferchen merged 1 commit into
masterfrom
docs/rss-flist-pool-1050
May 7, 2026
Merged

docs(audits): Vec<FileEntry> vs upstream pool allocator (#1050)#3833
oferchen merged 1 commit into
masterfrom
docs/rss-flist-pool-1050

Conversation

@oferchen
Copy link
Copy Markdown
Owner

@oferchen oferchen commented May 7, 2026

Summary

  • Document the container-level RSS gap between Vec<FileEntry> (plus segmented per-directory vectors) and upstream rsync's pool_alloc.c slab arena.
  • Quantify Vec doubling slack, per-segment fragmentation, and pointer-array overhead at 100K and 1M file scales; cross-check against the empirical 42.6 vs 7.9 MiB Mode-B baseline.
  • Propose five remediation paths ranked by effort vs payoff: pre-size from getdents count, bumpalo arena, typed-arena, custom slab pool, and inline-string name+dirname collapse. Recommend stacking pre-size + path collapse for ~40-50 MiB win at 1M entries with no API breakage.

Task: #1050. Companion to #1048 (path-heap), #966 (overall RSS), #971 (1M-file scaling).

Test plan

  • Audit doc only; no code changes.
  • 269 lines (under the 350-line cap).
  • All cited line ranges verified against crates/protocol/src/flist/* and target/interop/upstream-src/rsync-3.4.1/{flist.c,rsync.h,lib/pool_alloc.c}.

Document the container-level RSS gap between oc-rsync's
Vec<FileEntry> + segmented file lists and upstream rsync's
pool_alloc.c slab arena. Quantify Vec doubling slack, per-segment
fragmentation, and pointer-array overhead at 100K and 1M file
scales, then propose five remediation paths ranked by effort/payoff:
pre-size from getdents count, bumpalo arena, typed-arena, custom
slab pool, and inline-string path collapse. Recommend stacking
the cheapest two for an estimated 40-50 MiB win at 1M entries.
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label May 7, 2026
@oferchen oferchen merged commit c96f7c8 into master May 7, 2026
8 checks passed
@oferchen oferchen deleted the docs/rss-flist-pool-1050 branch May 8, 2026 03:48
oferchen added a commit that referenced this pull request May 18, 2026
Document the container-level RSS gap between oc-rsync's
Vec<FileEntry> + segmented file lists and upstream rsync's
pool_alloc.c slab arena. Quantify Vec doubling slack, per-segment
fragmentation, and pointer-array overhead at 100K and 1M file
scales, then propose five remediation paths ranked by effort/payoff:
pre-size from getdents count, bumpalo arena, typed-arena, custom
slab pool, and inline-string path collapse. Recommend stacking
the cheapest two for an estimated 40-50 MiB win at 1M entries.
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