feat(bench): attribute the loose-write residual — dir-scaling + splice I/O counters
sd_bench grows a directory-entry-scaling section (stat hit/miss and the loose-object composite at 8/64/256 siblings): FAT resolves every path component by linear scan, so cost climbing with N convicts directory scans as the ~360ms residual; flat cost exonerates them. stage_and_commit brackets the splice with the p_mmap counters and logs 'N mmaps / M KB read' per commit, splitting the residual into pack-read I/O vs everything else on the next real :sync.
This commit is contained in:
@@ -51,9 +51,15 @@ Sync performance — inherited from the
|
||||
- [ ] Close the publish gap: 19.8 s today — the splice's 5.0 s and the ~7 s of
|
||||
repo-open/negotiation overhead are the next curves
|
||||
([tradeoff analysis](tradeoff-curves/sync-commit-staging.md)).
|
||||
- [ ] Instrument the residual ~360 ms/loose-write (suspect: FAT directory-op
|
||||
cost in the freshen/refresh path) — one `sd_bench` + `p_mmap`-miss
|
||||
logging pass.
|
||||
- [~] Instrument the residual ~360 ms/loose-write (suspect: FAT directory-op
|
||||
cost in the freshen/refresh path) — **instrumentation BUILT 2026-07-14,
|
||||
measurement run pending**: `sd_bench` grew a directory-entry-scaling
|
||||
section (stat hit/miss + the loose-object composite at 8/64/256
|
||||
siblings — FAT resolves paths by linear scan, so cost climbing with N
|
||||
convicts dir scans; flash with `just flash-bench`), and `stage_and_commit`
|
||||
now brackets the splice with the `p_mmap` counters, logging
|
||||
`N mmaps / M KB read` per commit so the next real `:sync` splits the
|
||||
residual into pack-read I/O vs everything else.
|
||||
- [ ] The images-off-card lever
|
||||
([notes/git-sync-images-and-repo-size.md](notes/git-sync-images-and-repo-size.md))
|
||||
composes with the splice — decide whether to take it here.
|
||||
|
||||
Reference in New Issue
Block a user