Repository navigation
ci: limit each timed dense compile to 4 GiB instead of the pytest tree - #1324
Merged
Merged
Conversation
The dense guard job ran make, uv and pytest inside one 4 GiB systemd unit, so roughly 0.5 GiB of harness memory counted against a limit meant for the compiler. Each timed sqb compile now runs in its own transient scope with MemoryMax=4 GiB and no swap, and pytest runs outside it. Budgets are unchanged. Under CI the guards refuse to run without the per-compile limit, and a missing systemd-run or sudo fails naming the scope.
kvlonge
enabled auto-merge (squash)
November 6, 2026 12:00
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The dense all-rules guard job ran
make,uvand pytest inside one 4 GiB systemd unit. The test budget of 3.75 GiB per compile is meant for the compiler, but about 0.5 GiB of harness memory counted against the same limit, so the 10,000-model job was killed for memory while the compiler stayed inside its budget.Changes
sqbcompile in the dense and DuckShop 10K guards now runs in its own transient systemd scope withMemoryMax=4 GiBand no swap. Pytest runs outside the limit. This gives each compile about 0.5 GiB more effective headroom.SQLBUILD_COMPILE_MEMORY_LIMIT_BYTESis set. Ifsystemd-runorsudois missing, they fail and name the scope they could not start, so a guard never compiles without the limit.Verification
systemd-runfails, naming the scope.make check-cipass.