docs(v0.7): record the warm :gp measurement — 19.1s, mix inverted
Push leg fell to 5.9s (session-resumed TLS + repacked pack); the splice grew to 10.3s because a depth-4 path means ~5 loose tree writes, each paying the FAT dir-scan cost, plus the session's first 1.7MB .idx map. The publish-gap residual is now splice depth x loose-write cost.
This commit is contained in:
@@ -113,7 +113,19 @@ Sync performance — inherited from the
|
||||
session resumption (above) attacks the negotiation half; re-measure a
|
||||
warm `:sync` before hunting further. Run-3 data point: a rejected-push
|
||||
`:sync` (worst case, three connections) totalled 24.0 s vs 59 s in
|
||||
run 1; a clean warm publish is still unmeasured.
|
||||
run 1. **Warm clean publish measured 2026-07-14 (run 4, as `:gp` after
|
||||
the rename): 19.1 s** — but the mix shifted entirely. The push leg
|
||||
collapsed to **5.9 s** (6 objects; TLS-resumed connect 2.4 s vs 4.0 s
|
||||
for the session's first; post-repack marking cost invisible), and the
|
||||
splice grew to **10.3 s** because the committed file sat four
|
||||
directories deep: O(depth) means ~5 loose tree writes instead of 1
|
||||
(× the ~0.4 s dir-scan cost above) plus the session's first pack touch
|
||||
(5 mmaps / 1808 KB — the 1740 KB .idx map dominates). Same run:
|
||||
up-to-date `:gl` is now **4.7 s** git-side via the ls-refs fast path
|
||||
("no fetch" — was 9.7 s in run 1). So the residual curve is now
|
||||
**splice depth × loose-write cost**, which is the same FAT-dir-scan
|
||||
story as above and shares its levers (pack-not-loose foremost) — a
|
||||
future perf pass; a root-level file's warm `:gp` should sit ≈ 12–13 s.
|
||||
- [x] Instrument the residual ~360 ms/loose-write — **measured 2026-07-14,
|
||||
CONVICTED: FAT linear directory scans** (full analysis in the
|
||||
[tradeoff doc](tradeoff-curves/sync-commit-staging.md), run 6).
|
||||
|
||||
Reference in New Issue
Block a user