You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Enable cgroup controllers in the parent before creating child cgroups
A child cgroup has no memory.max or cpu.max until the parent lists the
controller in cgroup.subtree_control, and a private cgroup namespace root
starts empty, so every nested-cgroup scenario aborted before reaching the
payload. The launchers now enable the controllers, relocating the leaf
process first where the no-internal-process rule requires it, and a failed
probe drops its layer instead of killing the run.
The unit suite also now runs in CI. It was unreferenced by any workflow
while the end-to-end jobs are red by design, leaving nothing that could
report green.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BEZUSri3baWU58Ge1kAVnT
Copy file name to clipboardExpand all lines: tests/e2e/CALIBRATION.md
+9-11Lines changed: 9 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,16 +17,14 @@ OOM-kill (the cgroup-style signature) or an in-process refusal --
17
17
`MemoryError` on Linux/macOS, `ERROR_NOT_ENOUGH_MEMORY`/commit failure on
18
18
Windows -- (the rlimit/Job-Object-style signature).
19
19
20
-
**What could and could not be calibrated in this build environment**, per the
21
-
orchestrator's pre-dispatch feasibility probe and my own follow-up
22
-
experiments: `RLIMIT_AS` genuinely binds in this sandbox (a plain
23
-
`setrlimit(2)` call, no cgroup2/docker/systemd/Windows/macOS needed) and was
24
-
exercised directly. Every mechanism requiring cgroup v2, a docker/podman
25
-
daemon, systemd as PID 1, a Kubernetes/kind cluster, a Windows host, or a
26
-
macOS host could **not** be exercised here (this build environment: Linux,
27
-
`/sys/fs/cgroup` is a tmpfs not cgroup2, no docker daemon, systemd is not PID
28
-
1) and is marked UNVALIDATED with the specific missing prerequisite, never
29
-
fabricated.
20
+
**What could and could not be calibrated in this build environment**: `RLIMIT_AS`
21
+
genuinely binds in this sandbox (a plain `setrlimit(2)` call, no
22
+
cgroup2/docker/systemd/Windows/macOS needed) and was exercised directly.
23
+
Every mechanism requiring cgroup v2, a docker/podman daemon, systemd as PID
24
+
1, a Kubernetes/kind cluster, a Windows host, or a macOS host could **not** be
25
+
exercised here (this build environment: Linux, `/sys/fs/cgroup` is a tmpfs
26
+
not cgroup2, no docker daemon, systemd is not PID 1) and is marked
27
+
UNVALIDATED with the specific missing prerequisite, never fabricated.
30
28
31
29
## Calibration table
32
30
@@ -42,7 +40,7 @@ fabricated.
42
40
|`linux-podman-memory`|`167,772,160` B (160 MiB) if the needs-probe delegation check passes, else `0`| UNVALIDATED | No podman binary / no docker-equivalent daemon in this sandbox. |
43
41
|`linux-kubernetes-memory`|`201,326,592` B (192 MiB) if the needs-probe delegation check passes, else `0`| UNVALIDATED | No docker daemon, so no kind cluster is startable here. |
44
42
|`linux-stacked-outer-cgroup-tighter`|`134,217,728` B (128 MiB, the outer cgroup layer) | UNVALIDATED as a composed scenario | Its `RLIMIT_AS` (256 MiB) layer alone shares the mechanism validated above, but the *composed* expectation is governed by the tighter cgroup layer, which cannot be exercised here (no cgroup2). The whole scenario's calibration therefore cannot be completed in this environment. |
45
-
|`linux-triple-stack-container-tightest`|`536,870,912` B (512 MiB, the docker layer) if the nested-cgroup probe passes | UNVALIDATED | Requires docker `--privileged --cgroupns=private` plus a writable nested cgroup2; neither is available here. |
43
+
|`linux-triple-stack-container-tightest`|`536,870,912` B (512 MiB, the docker layer, unconditionally -- it is the tightest of the three layers regardless of whether the nested-cgroup probe passes, per `test_composition.py::test_all_triple_stack_variants_agree_when_probe_omitted_entirely`)| UNVALIDATED | Requires docker `--privileged --cgroupns=private` plus a writable nested cgroup2; neither is available here. |
46
44
|`linux-triple-stack-nested-cgroup-tightest`|`536,870,912` B (512 MiB, the nested-cgroup layer) if its probe passes, else `805,306,368` B (768 MiB, the rlimit layer) | UNVALIDATED | Same as above. |
47
45
|`linux-triple-stack-rlimit-tightest`|`536,870,912` B (512 MiB, the rlimit layer, unconditionally) | UNVALIDATED as a composed scenario | The rlimit layer's own mechanism is the one validated above, but the composed scenario as a whole (docker + nested cgroup context) cannot be exercised here. |
48
46
|`macos-rlimit-as-memory`|`314,572,800` B (300 MiB), `setrlimit(RLIMIT_AS)` on macOS | UNVALIDATED | Requires a macOS host; this sandbox is Linux. The underlying POSIX `setrlimit`/`getrlimit(RLIMIT_AS)` semantics are the same call validated on Linux above, but that is supporting context, not equivalent evidence -- macOS's own allocator/kernel behavior was not independently exercised. |
0 commit comments