Skip to content

CI performance dashboard #1182

Open
Open

Description

Maintained by the CI profiler routine, which runs every 4h. Each run replaces this body and carries the history rows over.

Headline (run 2026-10-15 08:16 UTC)

Window: 2026-10-14 08:16 → 2026-10-15 08:16 (run list reaches back to 12:24). 23 PRs merged. All 19 merge_group CI runs in the sample succeeded, with 0 evictions, 0 failures, 0 cancellations and 0 re-runs. 0 non-success jobs in the 1,723 sampled. Entries still arrive in pairs at about :48 each hour; only 2 merges (#1559, #1560 at 05:49) since the last run.

Sample: 300 of 369 runs in 24h. The run list is capped at 3 pages, which reach back to 10-14 12:24. Job detail (filter=all, first page) was fetched for 73 runs:

  • all 19 CI merge_group runs
  • all 13 push runs
  • the nightly and the 6 CI dispatches (first 100 jobs each; dispatch cost carried from the full 245-job count of the last run)
  • every third CI pull_request run (34)

That is 1,723 non-skipped jobs. Merge-queue timelines were read for the 15 most recent merges. No job logs were read, because the step timings were enough. The run used about 100 REST requests.

metric 24h
PRs merged 23 (since 08:16)
Merge queue enqueue → merge p50 9.05 / p90 12.2 min (n=15, range 8.07–12.42).
• Since 23:48 (fast hosts): 8.07–9.75 (n=9)
• 16:48–20:48 (slow hosts): 11.37–12.42 (n=6)
0 evictions. Every entry was enqueued once.
merge_group created → ci-ok p50 8.55 / p90 11.38 (n=19, range 7.52–11.75).
Last job before ci-ok: coverage in 12 runs, the Gradle e2e leg in 7.
PR run created → ci-ok p50 9.68 / p90 12.13 (n=11 full runs). 23 of 34 sampled runs were ci-ok-only stubs.
push to main created → ci-ok p50 4.12 / p90 5.89 (n=13, 9.9 job-min per run)
Nightly 10-15 05:46, success, 25 min wall.
Linux queue wait p50 / p90 / max Depot 0.02 / 0.02 / 0.93 (n=1,647). Slow hosts show up as start-up gap and slower run time, not queue wait.
macOS queue wait 0.13 / 0.17 (nightly + dispatch only, n=28). No macOS job ran on PR, merge_group or push.
Windows queue wait p50 / p90 / max 0.03 / 0.05 / 0.07 (n=48)
Job-min/day (Linux / Windows / macOS) ~4.45k / 0.61k / 0.43k. By event:
• merge_group: ~0.89k L + 0.06k W (38.6 L / 2.8 W per run, ~23 runs)
• CI pull_request: ~1.72k (14.1 per run including stubs, ~122 runs/day)
• push: ~0.16k
• nightly: ~0.24k / 0.08k / 0.06k
• 6 CI dispatches: ~1.44k / 0.47k / 0.37k
• hosted fail-fast watcher, not counted above: ~0.2k

Top jobs by sampled minutes (PR + merge_group + push):

  1. coverage: 240 min, p50 5.92 / p90 8.87
  2. Gradle e2e leg: 152 min, p50 4.66 / p90 6.88
  3. e2e_vex_build pip: 84 min, p50 2.71
  4. e2e_redirect_npm_build: 83 min, p50 2.60
  5. hosted-e2e: 82 min, p50 1.55 / p90 2.98
  6. clippy: 69 min, p50 1.45 / p90 2.23
  7. e2e-build: 68 min, p50 1.35
  8. yarn-classic: 55 min
  9. yarn-berry: 54 min
  10. windows-compile-check: 53 min, p50 2.65
  11. node-addon: 49 min

Top steps: Run e2e tests 376 min (510 jobs), Run tests with coverage 187 (43), Checkout 62, Run hosted-mode production e2e 46, Set up job 44, Install Rust 41 (324 jobs), Compile the CLI and every CLI test target 39.

Critical path (unchanged): clippy → coverage → ci-ok, in parallel with e2e-build → Gradle e2e leg → ci-ok. On fast hosts the two paths finish within about 1 min of each other.

Other items watched, not filed (below the bar):

  • Full-matrix CI dispatches (~380 job-min each, 6 in the window, see above): a manual choice
  • Install Rust (~0.12k/day spread over 324 sampled jobs)
  • Sharding coverage or splitting the Gradle leg (~1 min, because the two paths finish within a minute of each other on fast hosts)
  • The hosted fail-fast watcher (no cost)

Merge-queue settings (ruleset 24668460, read 08:20): unchanged.

  • max_entries_to_build 5 and max_entries_to_merge 5
  • min_entries_to_merge_wait_minutes 5
  • ALLGREEN, timeout 90, SQUASH

History

run (UTC) merges/24h MQ enq→merge p50/p90 (min) mg CI success p50 PR push→ci-ok p50/p90 mac queue p50/p90 linux queue p50/p90 job-min/day L/W/M
2026-10-15 08:16 23 PRs merged (19 mg CI successes since 12:24; 0 failures, 0 evictions) 9.05 / 12.2 (n=15; the 9 entries since 23:48 took 8.07–9.75; 16:48–20:48 entries 11.37–12.42) 8.55 (n=19, p90 11.38; the 9 runs since 23:48 7.52–9.03) 9.68 / 12.13 (n=11 full runs) 0.13 / 0.17 (nightly + 6 CI dispatches only) 0.02 / 0.02 (Depot, n=1,647) ~4.45k / 0.61k / 0.43k (incl. 6 full-matrix CI dispatches ≈ 1.44k / 0.47k / 0.37k; mg 38.6 L / 2.8 W per run; Depot slow-start 0% in 06h–08h, 05h hits were the nightly; nightly green → #1525 delivered)
2026-10-15 04:16 26 PRs merged (21 mg CI successes since 08:48; 0 failures, 0 evictions) 9.75 / 12.21 (n=15; the 7 entries since 23:48 took 8.06–9.75; 16:48–20:48 entries 11.36–12.41) 8.55 (n=21, p90 11.6; the 6 runs since 23:48 7.52–9.03) 9.65 / 11.37 (n=18 full runs) 0.13 / 0.17 (4 CI dispatches only) 0.02 / 0.02 (Depot, n=1,664) ~4.1k / 0.38k / 0.25k (incl. 4 full-matrix CI dispatches ≈ 0.96k / 0.31k / 0.25k; mg 40.0 L / 2.7 W per run; Depot slow-start 4% / 3% / 17% / 0% in 00h–03h, down from 58% at 23h)
2026-10-15 00:16 25 PRs merged (21 mg CI successes since 04:49; 0 failures, 0 evictions) 10.27 / 12.22 (n=15; fast hosts 7.75–8.88; the 6 entries 16:48–20:48 took 11.4–12.4) 8.15 (n=21, p90 11.6; fast 7.3–8.15; slow 9.3–12.9; 23:48 back to 7.5–7.6) 9.65 / 11.37 (n=16 full runs; 7.3–8.2 with no slow host) 0.12 / 0.17 (nightly + dispatch only) 0.02 / 0.02 (Depot, n=1,553) ~3.2k / 0.19k / 0.09k (incl. 2 CI dispatches; mg 38.9 L / 2.7 W per run; Depot slow-start 61% 16:16–20:16, 37% 20:16–00:10; coverage 8.3 vs 5.96 min on slow vs fast hosts)
2026-10-14 20:16 30 PRs merged (23 mg CI successes since 23:49; 0 failures, 0 evictions) 8.93 / 12.22 (n=15; 7.77–8.93 on fast hosts; all 5 entries since 16:48 took 11.4–12.4) 8.15 (n=23, p90 11.6; fast hosts 7.1–8.55; slow 9.3–12.9; all 5 since 16:48 10.6–11.75) 8.23 / 10.83 (n=13 full runs) 0.12 / 0.17 (nightly only) 0.02 / 0.02 (Depot, n=1,346) ~2.9k / 0.15k / 0.06k (mg 39.0 L / 2.6 W per run; Depot slow-start 59% of Linux jobs since 16:16 (4-core 59%, 16-core 68%); slow hosts also run coverage 8.2–9.9 min vs p50 5.85)
2026-10-14 16:16 31 PRs merged (25 mg CI successes since 22:49; 0 failures, 0 evictions) 8.73 / 11.4 (n=19; 7.77–8.93 except 6 slow-host entries 10.0–13.4) 8.55 (n=25, p90 10.73; fast hosts 7.80 vs slow 9.64) 7.92 / 11.03 (n=17 full runs) 0.12 / 0.17 (nightly only) 0.02 / 0.02 (Depot, n=1,509) ~3.3k / 0.15k / 0.06k (mg 37.0 L / 2.6 W per run; Depot slow-start back: 16-core 60% at 21–01h, 30% and 4-core 50% at 12–16h → #1512 reopened)
2026-10-14 12:17 53 PRs merged (54 mg CI successes 12:17–11:49, 1 failure, 10 cancelled; 4 since 08:16) 8.58 / 11.4 (n=15; 7.8–8.9 except #1525 13.4 on a slow host) 8.52 (n=54, p90 11.0; 7.3–8.6 since 09:49, 12.9 at 08:48) 8.23 / 10.52 (n=15 full runs; 7.65 / 8.63 since 08:16, n=8) 0.12 / 0.17 (nightly only) 0.02 / 0.02 (Depot, n=2,605) ~4.5k / 0.24k / 0.06k (mg 37.6 L / 2.6 W per run; Depot slow-start blips at 08:xx 91% and 12:xx 61%, 0–2% in 10:xx–11:xx)
2026-10-14 08:16 47 PRs merged (50 mg CI successes 13:11–07:49, 1 failure, 10 cancelled) 8.75 / 11.4 (n=15; 7.8–8.9 since 01:48) 8.55 (n=50, p90 11.0; 7.3–7.9 since 04:16, n=5) 9.63 / 12.72 (n=9 full runs, created→ci-ok) 0.12 / 0.17 (nightly only) 0.02 / 0.02 (Depot, n=2,296) ~4.9k / 0.23k / 0.06k (mg 37.5 L / 2.6 W per run, ~33 L since 04:16; Depot slow-start 3%/1% → #1512 closed; nightly failed on old-uv legs)
2026-10-14 04:16 44 PRs merged (45 mg CI successes 13:11–03:49, 1 failure, 10 cancelled) 10.1 / 11.5 (n=15; 8.2–8.9 since 01:48) 8.6 (n=45, p90 11.0; 7.1–8.6 since 01:48, n=4) 9.85 / 12.12 (n=18 full runs, created→ci-ok) none ran 0.02 / 0.02 (Depot, n=2,300) ~5.5k / 0.22k / 0.064k (mg 38.0 L / 2.6 W per run; 33 at 03:49; Depot slow-start share fell to 13–15% after 01:00)
2026-10-14 00:16 ~41 (41 mg CI successes 13:11–23:49; 40 PRs merged since 00:16; 0 mg runs 00:16–13:11) 11.3 / 12.0 (n=15; 9.8–12.7) 8.7 (n=41, p90 11.0; 9.5 since 20:16, n=8) 9.92 / 12.08 (n=19 full runs, created→ci-ok) none ran 0.02 / 0.02 (Depot, n=2,188) ~5.8k / 0.21k / 0.064k (mg 36.7 L / 2.6 W per run; 16-core hosts still slow, 4-core recovered at 22h)
2026-10-13 20:16 ~39 (39 mg CI successes, 1 failure, 10 cancelled) 11.4 / 15.6 (n=15; 9.7–12.7 outside the 13:5x eviction) 8.6 (n=39; 10.8 since 15:49, n=8) 10.63 / 12.07 (n=13 full runs since 16:20, created→ci-ok) none ran 0.02 / 0.02 (Depot, n=1,980) ~4.7k / 0.21k / 0.064k (mg per run 36 → 52 L job-min after 15:20: slow Depot hosts)
2026-10-13 16:17 ~39 (39 mg CI successes; 14-entry burst 13:11–13:35; 1 flake eviction 13:45 → 10 cancelled rebuilds) 11.6 / 23.7 (n=18; burst entries 6–14 10.4–18.1, eviction victims 23.7–25.3) 8.38 (n=27, p90 10.83) 8.02 / 11.67 (n=14 full runs, created→ci-ok) none ran (no macOS on PR/mg/push) 0.02 / 0.02 (Depot, n=1,620) ~4.8k / 0.21k / 0.064k (mg 36.4 / 2.6 / 0 per run + 340 L job-min in cancelled rebuilds)
2026-10-13 12:16 ~33 (37 mg runs, carried; 0 merges since 22:57) 8.8 / 10.5 (n=15, carried) 8.22 (carried) 7.57 / 7.87 (n=5 fresh full runs, created→ci-ok) 0.13 / 0.17 (nightly only, carried) 0.02 / 0.02 (Depot, n=145) ~3.9k / 0.18k / 0.064k (Release dispatches mostly aged out; mg 35.4 / 2.6 / 0 per run)
2026-10-13 08:16 ~33 (37 mg runs, carried; 0 merges since 22:57) 8.8 / 10.5 (n=15, carried) 8.22 (n=33, carried) 7.6 / 9.0 (n=6 fresh full runs, created→ci-ok) 0.13 / 0.17 (nightly only) 0.02 / 0.02 (Depot) ~4.1k / 0.25k / 0.10k (incl. Release dispatches; ~3.95k / 0.18k / 0.064k without; nightly green, 244 / 82 / 64)
2026-10-13 04:16 ~33 (37 mg runs; 0 merges since 22:57; 1 eviction, carried) 8.8 / 10.5 (n=15, carried) 8.22 (n=33, p90 9.21) 8.02 / 10.04 (n=10 full runs, created→ci-ok) 0.12 / 0.15 (nightly + Release only) 0.02 / 0.02 (Depot, n=1,828) ~4.1k / 0.22k / 0.07k (incl. 3 Release dispatches; ~3.95k / 0.15k / 0.035k without; mg 35.4 / 2.6 / 0 per run; push ~8.7 per run after #1415)
2026-10-13 00:16 35 (40 mg runs; 1 eviction, carried; release 5.0.0) 8.8 / 10.5 (n=15, max 10.5, 0 evictions) 8.15 (n=36, p90 9.2) 8.43 / 9.95 (n=10 full runs, created→ci-ok) 0.12 / 0.15 (nightly + dispatch only) 0.02 / 0.02 (Depot, n=2,309) ~5.4k / 0.35k / 0.16k (incl. 3 CI + 3 Release dispatches; ~4.9k / 0.16k / 0.03k without; mg 35.1 / 2.7 / 0 per run; push ~8.7 per run)
2026-10-12 20:16 36 (42 mg runs; 15:44 burst drained by 16:19; 1 eviction) 9.7 / 28.8 (n=15; burst entries 27.6–31.9, others 7.9–10.4) 7.93 (n=38, p90 9.03; 8.43 since 16:16) 7.67 / 10.22 (n=8 full runs, created→ci-ok) 0.12 / 0.17 (nightly + dispatch only) 0.02 / 0.02 (Depot, n=2,534) ~4.4k / 0.32k / 0.14k (incl. 3 CI + 2 Release dispatches; ~4.05k / 0.17k / 0.03k without; mg 33.9 / 2.9 / 0 per run; push now ~8 per run)
2026-10-12 16:16 31 (42 mg runs; 11-entry burst at 15:44; 1 eviction) 8.9 / 25.7 (n=15; burst entries 6–10 25.2–26.4) 7.63 (n=34, p90 8.67) 7.93 / 9.05 (n=9 full runs, created→ci-ok) 0.12 / 0.17 (nightly + dispatch only) 0.02 / 0.02 (Depot, n=2,854) ~4.4k / 0.32k / 0.12k (incl. 3 dispatches; ~4.1k / 0.20k / 0.03k without; mg 32.3 / 3.6 / 0 per run)
2026-10-12 12:26 23 (23 mg runs; no merges since 02:57; timelines carried) 8.0 / 8.3 (n=15, carried) 7.33 (n=23, p90 9.2) 7.38 / 8.9 (n=12 full runs, created→ci-ok; 1 flaky coverage re-run) 0.13 / 0.17 (nightly only) 0.02 / 0.02 (Depot, n=2,035) ~3.9k / 0.34k / 0.19k (incl. 3 dispatches; ~3.2k / 0.18k / 0.06k without; mg 30.7 / 4.6 / 0 per run)

Open ci-perf issues by ROI

ROI on one scale: (thousands of job-min/day weighted Linux ×1, Windows ×2, macOS ×3, plus 1 per critical-path or PR-latency minute) × confidence ÷ effort (S=1, M=2, L=3).

ROI issue saving status
~2.5 #1512 (settings) slow Depot hosts ~3.5 min on each hit merge (6 of 15 sampled merges in 24h), plus ~2 min on PR feedback Fast since 23:48 (0% slow-start at 06h–08h; 9 merges at 8.07–9.75 min). Kept open until a full busy day (08h–20h) is clean, since it already relapsed once. Needs a human to raise it with Depot.
~1.0 #1248 (settings) merge-queue build concurrency ~2–10 min for each entry past the 5th in a burst Needs a human decision. No batch went above 2 entries in this window.

Open ci-perf / ci-janitor PRs: #1568 fold last top-level covgap test binaries (#1089; may cut coverage compile/link time, to be measured after merge), #1565 and #1563 (#1089 test refactors, no CI-time effect).

Merged ci-perf / ci-janitor PRs (last 7 days) and measured effect

PR merged before → after
#1560 scan mod tests assert codes, not sentences (#1089) 10-15 05:57 Test refactor. No CI-time effect expected or measurable.
#1556 scan hosted tests assert codes, not sentences (#1089) 10-15 02:57 Test refactor. No CI-time effect expected or measurable.
#1546 apply suite asserts codes, not sentences (#1089) 10-14 21:00 Test refactor. No CI-time effect expected or measurable.
#1544 vendor suite asserts codes, not sentences (#1089) 10-14 20:00 Test refactor. No CI-time effect expected or measurable yet.
#1525 fix nightly old-uv orphan-unwind failure in uv e2e (ci-janitor) 10-14 09:01 The 10-14 nightly failed on old-uv legs → the 10-15 nightly 38688589166 was green (0 failed jobs). Delivered.
#1497 fix phantom version bump in release-readiness (ci-janitor) 10-13 19:59 Correctness only. No effect on timing.
#1484 hermetic spawns in vendor build tests; serializes the SOCKET_NPM_REGISTRY test 10-13 14:59 The flake from #1466 failed coverage 2× at 13:45–14:23 (1 eviction, 10 cancelled rebuilds, 340 job-min) → 0 coverage failures in the 50 merge_group runs since 14:16 (through 10-14 07:49). Delivered.
#1459 ride out crates.io blips in required cargo e2e legs (ci-janitor) 10-13 13:21 Reliability only. 0 cargo e2e failures since.
#1415 run the full e2e tier nightly, not per push 10-12 16:11 Push run: 50 jobs and 38.7–42.7 job-min (n=3, 15:53–16:10) → 9 jobs and 7.2–11.3 job-min (n=14, mean ~8.7, through 22:57). Push created → ci-ok 4.3–5.25 → 3.1–4.85 min. That is ~−0.45k Linux job-min/day at 21 pushes/day, better than the ~−300 expected. Delivered.
#1438 annotate failing tests in the coverage job (ci-janitor) 10-12 17:58 Diagnostics only.
#1418 env race flake in cache_env scrub self-tests (ci-janitor) 10-12 16:10 0 coverage failures in merge_group after 16:02 (n=23 through 22:49). #1416 is closed.
#1411 macOS go.work member match (ci-janitor) 10-12 16:18 The 10-13 nightly 38353589047 was green, including test (macos-latest, 1), which failed on 10-12. Delivered.
#1392 Windows flake in notifier dead-endpoint test (ci-janitor) 10-11 19:23 0 Windows failures in merge_group since.
#1386 type-check Windows in the queue, in parallel 10-11 18:21 mg created → ci-ok 9.65 → 7.6–7.9 min. e2e-build-windows hasn't been last before ci-ok in this window. Delivered.
#1383 skip PR re-test after a clean main merge 10-11 18:01 Not yet observable. 0 of ~330 sampled PR runs across seven profiles took the path.
#1387 re-download truncated e2e-bin archives (ci-janitor) 10-11 17:50 0 e2e-bin download failures.
#1376 dead Depot runner doesn't cancel a merge-queue run 10-10 13:37 0 runner losses.
#1355 reuse the merge-queue verdict on main, trim coverage/sbt 10-10 08:57 Push-to-main run 22+ → 3.4 min. Delivered.
#1375 lean per-package-manager gate 10-09 21:29 Job-min per mg run 312 / 69 / 60 → 33.9 / 2.9 / 0. PR → ci-ok 21.8 → 7.7. Delivered.
#1362 Depot Linux runners 10-09 20:53 Linux queue wait p90 18.3 → 0.02 min. Delivered.
#1284, #1275 compat path filters 10-09 No compatibility workflow ran in the window. Delivered.

Method notes

  • GraphQL is blocked in this environment, so merge-queue state comes from REST timelines of merged PRs. The timelines use the last enqueue before the merge.
  • Jobs are fetched with filter=all. Queue wait = job started_at − created_at; skipped jobs are excluded. "Start-up gap" = job started_at → first step started_at; over 15 s counts as a slow host.
  • Critical path = merge_group run created_at → ci-ok completed_at.
  • Daily job-min = per-run mean × 24h run count per event. The PR count is scaled from the 3 listed pages: this run, 101 PR runs over ~19.9 h, about 122 per day. Merges per day come from the closed-PR list.

Generated by Claude Code

Activity

  1. mikolalysenko commented on Oct 8, 2026

    @mikolalysenko
    CollaboratorAuthor

    [agent] There are now two open dashboard issues: this one and #1175, both titled "CI performance dashboard" and labeled ci-perf-dashboard. The body says it is maintained in place, so the profiler routine should update one issue rather than open a new one each run. I'm not closing either one, because I can't tell which issue the routine will update next. Whoever owns the profiler should close the copy it no longer updates.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions