From 4880231ff710058cbca7c5ea63d4a8c5f6591c99 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 17 Jul 2026 11:07:59 +0100 Subject: [PATCH] perf(ci): correct pack hints from measured stripe walls (#109899) Group walls measured from compact run 29564411446 (post-#109769): core-unit-fast-isolated runs 78.6s on 4 vCPU because fork-per-file isolation parallelizes poorly there; pin it to the 8 vCPU class where the same segment runs ~50s. Unit-fast stripes measure ~25-37s (hinted 100/60) and tooling stripes 71-87s; refresh both so the packer stops overfilling small bins (the 299s compact tail this run produced). Cheap stripes may now co-locate in one bin, so the compact test only requires their presence. --- scripts/lib/ci-node-test-plan.mjs | 21 +++++++++++++-------- test/scripts/ci-node-test-plan.test.ts | 3 +-- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/scripts/lib/ci-node-test-plan.mjs b/scripts/lib/ci-node-test-plan.mjs index 836ee75ed8b9..7314333f2d7d 100644 --- a/scripts/lib/ci-node-test-plan.mjs +++ b/scripts/lib/ci-node-test-plan.mjs @@ -125,14 +125,18 @@ const COMPACT_GROUP_SECONDS_HINTS = new Map([ // PTY timing suites still need a lightly packed lane; the exclusive-bin cap // leaves only trivial co-groups next to this measured runtime. ["core-runtime-tui-pty", 103], - ["core-tooling-1", 85], - ["core-tooling-2", 112], - ["core-tooling-3", 106], - ["core-tooling-4", 105], - ["core-tooling-isolated", 58], - ["core-unit-fast-1", 60], - ["core-unit-fast-2", 60], - ["core-unit-fast-isolated", 25], + // Stripe walls measured from compact run 29564411446 group timestamps. + ["core-tooling-1", 87], + ["core-tooling-2", 80], + ["core-tooling-3", 82], + ["core-tooling-4", 71], + ["core-tooling-isolated", 45], + ["core-unit-fast-1", 40], + ["core-unit-fast-2", 40], + // Fork-per-file isolation parallelizes poorly on 4 vCPU (78.6s measured in + // compact run 29564411446); keep it on the 8 vCPU class where the same + // segment runs ~50s. + ["core-unit-fast-isolated", 50], ["core-unit-src-security", 108], ["core-unit-support", 15], ]); @@ -256,6 +260,7 @@ const KEEP_LARGE_NODE_TEST_RUNNER = new Set([ "core-runtime-media-ui", "core-unit-fast-1", "core-unit-fast-2", + "core-unit-fast-isolated", "core-unit-src-security", ]); const RELEASE_ONLY_PLUGIN_SHARDS = new Set(["agentic-plugins"]); diff --git a/test/scripts/ci-node-test-plan.test.ts b/test/scripts/ci-node-test-plan.test.ts index 4b55d2e9940c..4c1358936952 100644 --- a/test/scripts/ci-node-test-plan.test.ts +++ b/test/scripts/ci-node-test-plan.test.ts @@ -242,10 +242,9 @@ describe("scripts/lib/ci-node-test-plan.mjs", () => { const jobOf = (name: string) => compact.findIndex((shard) => shard.groups.some((group) => group.shard_name === name)); expect(jobOf("agentic-agents-core-runner-embedded")).toBeGreaterThanOrEqual(0); + // Cheap stripes may legally co-locate in one bin; only existence matters. expect(jobOf("core-unit-fast-1")).toBeGreaterThanOrEqual(0); expect(jobOf("core-unit-fast-2")).toBeGreaterThanOrEqual(0); - expect(jobOf("core-unit-fast-1")).not.toBe(jobOf("core-unit-fast-2")); - expect(jobOf("agentic-agents-core-runner-embedded")).not.toBe(jobOf("core-unit-fast-1")); // Spawn/signal-timing suites never mix with regular groups, and every // compact bin runs serially: overlapping Vitest runs flake timing- // sensitive tests on both runner classes.