claw-cargo: default --parallel-restore back to 1 (sequential)

Pi 5 loopback measurement 2026-07-13:

  --parallel-restore 1 : wall 2m52s, restore 20s
  --parallel-restore 8 : wall 3m06s, restore 34s

Sequential is 70% faster on loopback. N-way stream contention costs
more than a single stream's congestion-control amortization. Same
shape as Phase 5k prewarm — fanout only wins when per-stream
throughput has a ceiling (WAN, tunneled links).

--parallel-restore N remains as opt-in.
This commit is contained in:
Omar Sobh
2026-07-13 01:09:39 -07:00
parent 9fe6bf4772
commit 1053930451
+9 -6
View File
@@ -220,12 +220,15 @@ struct BuildArgs {
/// Skip capture + upload on a miss. Useful for read-only cache use. /// Skip capture + upload on a miss. Useful for read-only cache use.
#[arg(long)] #[arg(long)]
no_upload: bool, no_upload: bool,
/// Field finding 2026-07-12: parallel chunk fetch on cache HIT. /// Field finding 2026-07-12/13: parallel chunk fetch on cache
/// Sequential BlobGetStream restore of 947 MiB on Pi 5 took 18s /// HIT. Default `1` (sequential BlobGetStream) — measured on Pi 5
/// (~53 MiB/s); parallel chunk fetches stack their per-stream /// loopback, sequential beats parallel=8 by 70% (20s vs 34s)
/// throughputs. Set to 1 to force sequential (matches pre-fix /// because per-stream QUIC congestion control is more efficient
/// behavior). /// than N-way stream contention when the connection has no
#[arg(long, default_value_t = 8)] /// per-stream ceiling. Opt in with `--parallel-restore N` on
/// cross-node connections where the per-stream cap actually bites
/// (WAN, tunneled links).
#[arg(long, default_value_t = 1)]
parallel_restore: usize, parallel_restore: usize,
/// Extra args passed verbatim to `cargo build` (after `--`). /// Extra args passed verbatim to `cargo build` (after `--`).
#[arg(last = true)] #[arg(last = true)]