aboutsummaryrefslogtreecommitdiff
path: root/bin/snapshot-cgroup
diff options
context:
space:
mode:
authorMichele Bertasi <405934+mbrt@users.noreply.github.com>2026-03-26 22:19:14 +0100
committerGitHub <noreply@github.com>2026-03-26 14:19:14 -0700
commit298ed2a6c44cde90b4262b884169c53b8deda508 (patch)
tree1838fd3e8ca9913292562ee854d633288e6dfced /bin/snapshot-cgroup
parentea916da7fa9844cc3da608e75510f478c7b09f7d (diff)
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
Diffstat (limited to 'bin/snapshot-cgroup')
-rwxr-xr-xbin/snapshot-cgroup42
1 files changed, 42 insertions, 0 deletions
diff --git a/bin/snapshot-cgroup b/bin/snapshot-cgroup
new file mode 100755
index 0000000..5fed85f
--- /dev/null
+++ b/bin/snapshot-cgroup
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+#
+# snapshot-cgroup - Copy cgroup v2 files from the live system into a
+# directory tree suitable for use with TestIntegrationCgroupLimits.
+#
+# Usage: snapshot-cgroup <output-dir>
+#
+# The script reads /proc/self/cgroup to find the v2 group path and copies
+# exactly the files that the cgroup package needs:
+#
+# proc/self/cgroup
+# sys/fs/cgroup/<group>/cpu.max
+# sys/fs/cgroup/<group>/memory.max
+
+set -euo pipefail
+
+if [[ $# -ne 1 ]]; then
+ echo "Usage: $0 <output-dir>" >&2
+ exit 1
+fi
+
+out="$1"
+mkdir -p "$out"
+
+copy_file() {
+ local src="$1" dst="$out/$2"
+ mkdir -p "$(dirname "$dst")"
+ cp "$src" "$dst"
+}
+
+copy_file /proc/self/cgroup proc/self/cgroup
+
+group=$(awk -F: '/^0::/ { print $3 }' /proc/self/cgroup)
+cgdir="/sys/fs/cgroup${group}"
+
+for f in cpu.max memory.max; do
+ if [[ -f "$cgdir/$f" ]]; then
+ copy_file "$cgdir/$f" "sys/fs/cgroup${group}/$f"
+ fi
+done
+
+echo "Snapshot written to $out"