Keep swap under the test memory cap and continue past OOM kills

This commit is contained in:
Chris Tate
2026-10-23 21:39:03 -05:00
parent 7cdfe16c9b
commit e4079abd41
2 changed files with 8 additions and 5 deletions
+7 -4
View File
@@ -216,14 +216,17 @@ jobs:
# Start the corpus immediately beside a serial side queue. One shared
# worker budget covers both processes; file and case shard axes stay
# separate so every fixture still runs exactly once in each lane.
# The tests run in a transient scope capped below the runner's 16 GB:
# past 13 GB the kernel kills the scope's largest process, so the job
# log names the test instead of the runner itself running out of memory.
# The tests run in a transient scope capped below the runner's 16 GB, so
# the runner itself keeps memory: past 14 GB of RAM the scope swaps, as
# the whole runner did before (a sanitized shard peaks near 16 GB), and
# when RAM and swap run out the kernel kills the scope's largest process.
# OOMPolicy=continue leaves the rest of the scope running, so vitest
# reports the killed worker and the job log names the test.
- name: Tests (corpus and integration suites)
run: |
ulimit -c 0
if [ -d /run/systemd/system ]; then
exec sudo --preserve-env systemd-run --scope --quiet -p MemoryMax=13G -p MemorySwapMax=0 \
exec sudo --preserve-env systemd-run --scope --quiet -p MemoryMax=14G -p OOMPolicy=continue \
--uid="$(id -u)" --gid="$(id -g)" -- env PATH="$PATH" HOME="$HOME" node scripts/ci-test.mjs
fi
node scripts/ci-test.mjs