You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(skills): record CAS hardware, fetcher count, log API cap, build timing
- ci-reference: add AX102-U CAS server specs (1Gbit/s, NVMe Gen4) and
fetcher count reasoning (32 per job justified by hardware)
- ci-reference: correct log API cap from ~23K to ~11K lines; note GHA UI
as the only way to see live progress monitor output mid-build
- buildstream: document why warm-cache builds still take 90-120 min
(pull volume, two parallel variants, sequential OCI assembly, cold elements)
- buildstream: document 32 fetchers as correct for AX102-U CAS
- workflow-map: update paths-ignore entries to include files/scripts/**
Assisted-by: Claude Sonnet 4.6 via GitHub Copilot
Copy file name to clipboardExpand all lines: docs/skills/buildstream.md
+15Lines changed: 15 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,3 +133,18 @@ BST option names only allow alphanumeric characters and underscores. A name like
133
133
### Weak-key caching can hide new packages behind a clean build (2026-06-07)
134
134
135
135
Changing a `kind: stack` dependency does not always invalidate downstream `compose` outputs in non-strict mode. If a package is present in the graph but missing from the final image, inspect cache behavior before assuming the package element is wrong.
136
+
137
+
### Warm-cache builds still take 90-120 min — this is normal (2026-06-23)
138
+
139
+
Even with a fully warm remote CAS, a full build takes 90-120 min. Common misconception: "cache is hot = fast build." Actual breakdown:
140
+
141
+
-**Pull volume:**~1,400 elements × a few seconds each / 32 parallel fetchers = 15-30 min just for network pulls
142
+
-**Two parallel jobs:**`default` and `nvidia` both run simultaneously, each hitting the same CAS endpoint, halving effective bandwidth per job
143
+
-**OCI assembly is sequential:** After all elements pull/build, `oci/bluefin.bst` runs chunkify + image assembly — single-threaded, typically 20-40 min on its own
144
+
-**Cold elements:** Any junction ref bump (Renovate PRs for distrobox, gnome-build-meta, etc.) invalidates those subtrees → full recompile from source adds 30-90 min
145
+
146
+
Do not cancel a build under 120 min just because it "seems slow." Historical range for successful builds: 90-150 min.
147
+
148
+
### 32 fetchers is the right setting for cache.projectbluefin.io (2026-06-23)
149
+
150
+
`buildstream-ci.conf` uses `fetchers: 32` (BST default is 10). With default + nvidia running simultaneously = 64 concurrent gRPC streams. The CAS server is a Hetzner AX102-U (1 Gbit/s uplink, NVMe Gen4) and can serve 64 streams comfortably. The bottleneck is network bandwidth (~125 MB/s total), not server capacity. Do not reduce fetchers without evidence of server-side saturation.
Copy file name to clipboardExpand all lines: docs/skills/ci-reference.md
+22-6Lines changed: 22 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -83,6 +83,14 @@ Route through `ci.md` first, then come here only when the focused skills do not
83
83
84
84
`cache.projectbluefin.io:11002` handles all five BST remote services: artifact cache, source cache, CAS storage, remote execution, and action cache. All use the same endpoint with mTLS auth.
**Fetcher count reasoning:**`buildstream-ci.conf` uses `fetchers: 32` per job. With default + nvidia running simultaneously = 64 concurrent gRPC streams. The AX102-U can comfortably serve 64 streams; the actual ceiling is the 1 Gbit/s uplink (~125 MB/s total). 32 fetchers per job is appropriate. Do not lower without evidence of CAS-side saturation.
0 commit comments