From 298ed2a6c44cde90b4262b884169c53b8deda508 Mon Sep 17 00:00:00 2001 From: Michele Bertasi <405934+mbrt@users.noreply.github.com> Date: Thu, 26 Mar 2026 22:19:14 +0100 Subject: Add support for cgroup limits (#443) * Add cgroup package * Refactor procGgroup * Add testdata generation * Add v1 testdata generation * Move scripts around * Add integration test in CI * Remove cgroup v1 * Move to cgroup struct * Remove half-core test as it's redundant --- cgroup/testdata/v2-no-limit/expected.json | 1 + cgroup/testdata/v2-no-limit/proc/self/cgroup | 1 + cgroup/testdata/v2-no-limit/sys/fs/cgroup/cpu.max | 1 + cgroup/testdata/v2-no-limit/sys/fs/cgroup/memory.max | 1 + cgroup/testdata/v2-quarter-core-64m/expected.json | 1 + cgroup/testdata/v2-quarter-core-64m/proc/self/cgroup | 1 + cgroup/testdata/v2-quarter-core-64m/sys/fs/cgroup/cpu.max | 1 + cgroup/testdata/v2-quarter-core-64m/sys/fs/cgroup/memory.max | 1 + cgroup/testdata/v2-two-cores-256m/expected.json | 1 + cgroup/testdata/v2-two-cores-256m/proc/self/cgroup | 1 + cgroup/testdata/v2-two-cores-256m/sys/fs/cgroup/cpu.max | 1 + cgroup/testdata/v2-two-cores-256m/sys/fs/cgroup/memory.max | 1 + 12 files changed, 12 insertions(+) create mode 100644 cgroup/testdata/v2-no-limit/expected.json create mode 100644 cgroup/testdata/v2-no-limit/proc/self/cgroup create mode 100644 cgroup/testdata/v2-no-limit/sys/fs/cgroup/cpu.max create mode 100644 cgroup/testdata/v2-no-limit/sys/fs/cgroup/memory.max create mode 100644 cgroup/testdata/v2-quarter-core-64m/expected.json create mode 100644 cgroup/testdata/v2-quarter-core-64m/proc/self/cgroup create mode 100644 cgroup/testdata/v2-quarter-core-64m/sys/fs/cgroup/cpu.max create mode 100644 cgroup/testdata/v2-quarter-core-64m/sys/fs/cgroup/memory.max create mode 100644 cgroup/testdata/v2-two-cores-256m/expected.json create mode 100644 cgroup/testdata/v2-two-cores-256m/proc/self/cgroup create mode 100644 cgroup/testdata/v2-two-cores-256m/sys/fs/cgroup/cpu.max create mode 100644 cgroup/testdata/v2-two-cores-256m/sys/fs/cgroup/memory.max (limited to 'cgroup/testdata') diff --git a/cgroup/testdata/v2-no-limit/expected.json b/cgroup/testdata/v2-no-limit/expected.json new file mode 100644 index 0000000..3a6d7ed --- /dev/null +++ b/cgroup/testdata/v2-no-limit/expected.json @@ -0,0 +1 @@ +{"cpu_quota": null, "memory_limit": null} diff --git a/cgroup/testdata/v2-no-limit/proc/self/cgroup b/cgroup/testdata/v2-no-limit/proc/self/cgroup new file mode 100644 index 0000000..1e027b2 --- /dev/null +++ b/cgroup/testdata/v2-no-limit/proc/self/cgroup @@ -0,0 +1 @@ +0::/ diff --git a/cgroup/testdata/v2-no-limit/sys/fs/cgroup/cpu.max b/cgroup/testdata/v2-no-limit/sys/fs/cgroup/cpu.max new file mode 100644 index 0000000..1c1d3e7 --- /dev/null +++ b/cgroup/testdata/v2-no-limit/sys/fs/cgroup/cpu.max @@ -0,0 +1 @@ +max 100000 diff --git a/cgroup/testdata/v2-no-limit/sys/fs/cgroup/memory.max b/cgroup/testdata/v2-no-limit/sys/fs/cgroup/memory.max new file mode 100644 index 0000000..355295a --- /dev/null +++ b/cgroup/testdata/v2-no-limit/sys/fs/cgroup/memory.max @@ -0,0 +1 @@ +max diff --git a/cgroup/testdata/v2-quarter-core-64m/expected.json b/cgroup/testdata/v2-quarter-core-64m/expected.json new file mode 100644 index 0000000..41ec96f --- /dev/null +++ b/cgroup/testdata/v2-quarter-core-64m/expected.json @@ -0,0 +1 @@ +{"cpu_quota": 0.25, "memory_limit": 67108864} diff --git a/cgroup/testdata/v2-quarter-core-64m/proc/self/cgroup b/cgroup/testdata/v2-quarter-core-64m/proc/self/cgroup new file mode 100644 index 0000000..1e027b2 --- /dev/null +++ b/cgroup/testdata/v2-quarter-core-64m/proc/self/cgroup @@ -0,0 +1 @@ +0::/ diff --git a/cgroup/testdata/v2-quarter-core-64m/sys/fs/cgroup/cpu.max b/cgroup/testdata/v2-quarter-core-64m/sys/fs/cgroup/cpu.max new file mode 100644 index 0000000..6fe3458 --- /dev/null +++ b/cgroup/testdata/v2-quarter-core-64m/sys/fs/cgroup/cpu.max @@ -0,0 +1 @@ +25000 100000 diff --git a/cgroup/testdata/v2-quarter-core-64m/sys/fs/cgroup/memory.max b/cgroup/testdata/v2-quarter-core-64m/sys/fs/cgroup/memory.max new file mode 100644 index 0000000..e6c6862 --- /dev/null +++ b/cgroup/testdata/v2-quarter-core-64m/sys/fs/cgroup/memory.max @@ -0,0 +1 @@ +67108864 diff --git a/cgroup/testdata/v2-two-cores-256m/expected.json b/cgroup/testdata/v2-two-cores-256m/expected.json new file mode 100644 index 0000000..04ce067 --- /dev/null +++ b/cgroup/testdata/v2-two-cores-256m/expected.json @@ -0,0 +1 @@ +{"cpu_quota": 2.0, "memory_limit": 268435456} diff --git a/cgroup/testdata/v2-two-cores-256m/proc/self/cgroup b/cgroup/testdata/v2-two-cores-256m/proc/self/cgroup new file mode 100644 index 0000000..1e027b2 --- /dev/null +++ b/cgroup/testdata/v2-two-cores-256m/proc/self/cgroup @@ -0,0 +1 @@ +0::/ diff --git a/cgroup/testdata/v2-two-cores-256m/sys/fs/cgroup/cpu.max b/cgroup/testdata/v2-two-cores-256m/sys/fs/cgroup/cpu.max new file mode 100644 index 0000000..9685656 --- /dev/null +++ b/cgroup/testdata/v2-two-cores-256m/sys/fs/cgroup/cpu.max @@ -0,0 +1 @@ +200000 100000 diff --git a/cgroup/testdata/v2-two-cores-256m/sys/fs/cgroup/memory.max b/cgroup/testdata/v2-two-cores-256m/sys/fs/cgroup/memory.max new file mode 100644 index 0000000..853f47e --- /dev/null +++ b/cgroup/testdata/v2-two-cores-256m/sys/fs/cgroup/memory.max @@ -0,0 +1 @@ +268435456 -- cgit v1.2.3