Skip to content

DO NOT MERGE: bit_pr load test on large (4 vCPU / 8GB) - #10604

Closed
luvkapur wants to merge 3 commits into
masterfrom
ci-pr-loadtest-large
Closed

DO NOT MERGE: bit_pr load test on large (4 vCPU / 8GB)#10604
luvkapur wants to merge 3 commits into
masterfrom
ci-pr-loadtest-large

Conversation

@luvkapur

Copy link
Copy Markdown
Member

Next rung down from the xlarge validation (#10602: 98-component cascade, 25 min, ~1,010 credits, no OOM). This branch runs the same cascade with resource_class: large + 6GB heap. If it survives with acceptable wall time, dynamic sizing tiers can start at large; if it OOMs or crawls, xlarge is the floor for heavy PRs. Will be closed and branch deleted once the verdict is recorded.

🤖 Generated with Claude Code

luvkapur and others added 3 commits August 11, 2026 14:48
…r sizing)

Insights (30d, all branches): ~4.8M credits/month (~$2.9k) —
e2e_test 3.41M (71%), bit_pr 800k (17%), e2e_test_bbit 200k, bit_merge 153k.

- stop persisting .pnpm-store: nothing downstream reads it; it inflated the
  workspace every node of every job attaches (~2.7min x 40 e2e nodes/run)
- e2e_test off master pushes: gates nothing there (bit_merge and the merge
  queue don't depend on it); a daily canary now runs in nightly instead
  (~440k credits/month -> ~185k)
- e2e_test parallelism 40 -> 30: per-node fixed setup is the only cost that
  scales with node count (suite time is constant); ~4min wall-clock cost
- bit_pr 2xlarge -> xlarge: build is CPU-bound on a single env, 16 cores were
  idle at 80 credits/min; heap capped at 12GB to fit 16GB RAM (~400k/month
  if it holds — revert to 2xlarge on 'Killed')
- e2e_test_bbit halts on quiet days: no new @teambit/bit version in 24h means
  the previous nightly already bundled+tested the same thing (32 nodes x 30min)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…npm call

The gate only ever saves work, so a metadata hiccup (npm outage, missing
time entry, non-numeric output) must run the tests, not fail the job.
Also one npm invocation instead of two — it runs on every parallel node.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Same 98-component cascade as the xlarge test (comment touch on
teambit.component/component), now on large (4 vCPU / 8GB / 20 cr/min,
heap 6144). xlarge already passed this in 25 min / ~1,010 credits; this
probes the next rung down.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@luvkapur

Copy link
Copy Markdown
Member Author

Verdict: large (8GB) cannot run the heavy-cascade class — cgroup OOM ('Received "killed" signal') during GenerateEnvTemplate's webpack bundling at minute 16 of the 98-component cascade, after snap/compile/test/BundleUI/ExtractSchema all passed. Wasted-run cost of the probe: ~380 credits.

Empirical tier map so far:

  • 2xlarge: never needed in any measured run
  • xlarge: handles the 98-component worst case (25 min, ~1,010 credits, no OOM) → correct static default (as set in ci: cut CircleCI credit burn ~25-30% (e2e overhead, master e2e, bit_pr sizing) #10597)
  • large: fine for small lanes (memory peaked well below 8GB on the 2-component run), OOMs when the lane pulls env-affecting cascades into webpack bundling → usable only behind dynamic sizing with a reliable lane-size/env-touch classifier

Remote lane teambit.bit/ci-pr-loadtest-large can be janitored.

@luvkapur luvkapur closed this Aug 12, 2026
@luvkapur
luvkapur deleted the ci-pr-loadtest-large branch August 12, 2026 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant