From 49c9c07bc9e3e430c80e4927d85a56287f306477 Mon Sep 17 00:00:00 2001 From: Alexander Mikhalitsyn Date: Wed, 2 Oct 2024 17:00:09 +0200 Subject: [PATCH] tests/cgroup: take into account LXCFS support for swap accounting Older LXCFS versions (4.0.x and 5.0.x branches) do not handle swap accounting on cgroup2 properly. While we are improving cgroup2 tests for a newer LXD versions we don't want to make tests red on the older ones. So, let's check if LXCFS declares support for swap accounting and only in this case make any checks for it. See also: https://github.com/lxc/lxcfs/pull/663 Signed-off-by: Alexander Mikhalitsyn --- tests/cgroup | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tests/cgroup b/tests/cgroup index 5cdbef0b0..331fc9dfb 100755 --- a/tests/cgroup +++ b/tests/cgroup @@ -12,6 +12,13 @@ lxd init --auto IMAGE="${TEST_IMG:-ubuntu-minimal-daily:24.04}" +rc=0 +journalctl --quiet --no-hostname --no-pager --boot=0 --unit=snap.lxd.daemon.service | grep "Kernel supports swap accounting" || rc="$?" +LXCFS_SUPPORTS_SWAP_ACCOUNTING=0 +if [ "${rc}" -eq 0 ]; then + LXCFS_SUPPORTS_SWAP_ACCOUNTING=1 +fi + # Test set -x @@ -22,7 +29,8 @@ lxc launch "${IMAGE}" c1 echo "==> Validate default values" [ "$(lxc exec c1 -- nproc)" = "$(nproc)" ] [ "$(lxc exec c1 -- grep ^MemTotal /proc/meminfo)" = "$(grep ^MemTotal /proc/meminfo)" ] -if [ -e "/sys/fs/cgroup/memory/memory.memsw.limit_in_bytes" ] || [ -e "/sys/fs/cgroup/system.slice/memory.swap.max" ]; then +if [ -e "/sys/fs/cgroup/memory/memory.memsw.limit_in_bytes" ] || + { [ -e "/sys/fs/cgroup/system.slice/memory.swap.max" ] && [ "${LXCFS_SUPPORTS_SWAP_ACCOUNTING}" -eq 1 ]; }; then [ "$(lxc exec c1 -- grep ^SwapTotal /proc/meminfo)" = "$(grep ^SwapTotal /proc/meminfo)" ] else [ "$(lxc exec c1 -- grep ^SwapTotal /proc/meminfo)" = "SwapTotal: 0 kB" ] @@ -110,7 +118,8 @@ echo "==> Testing memory limits" MEM_LIMIT_MIB=512 lxc config set c1 limits.memory="${MEM_LIMIT_MIB}MiB" [ "$(lxc exec c1 -- grep ^MemTotal /proc/meminfo)" = "MemTotal: $((MEM_LIMIT_MIB * 1024)) kB" ] -if [ -e "/sys/fs/cgroup/memory/memory.memsw.limit_in_bytes" ] || [ -e "/sys/fs/cgroup/system.slice/memory.swap.max" ]; then +if [ -e "/sys/fs/cgroup/memory/memory.memsw.limit_in_bytes" ] || + { [ -e "/sys/fs/cgroup/system.slice/memory.swap.max" ] && [ "${LXCFS_SUPPORTS_SWAP_ACCOUNTING}" -eq 1 ]; }; then [ "$(lxc exec c1 -- grep ^SwapTotal /proc/meminfo)" = "SwapTotal: $((MEM_LIMIT_MIB * 1024)) kB" ] else [ "$(lxc exec c1 -- grep ^SwapTotal /proc/meminfo)" = "SwapTotal: 0 kB" ] @@ -133,7 +142,8 @@ if [ -e "/sys/fs/cgroup/memory" ]; then [ "$(lxc exec c1 -- cat /sys/fs/cgroup/memory/memory.swappiness)" = "65" ] fi -if [ -e "/sys/fs/cgroup/memory/memory.memsw.limit_in_bytes" ] || [ -e "/sys/fs/cgroup/system.slice/memory.swap.max" ]; then +if [ -e "/sys/fs/cgroup/memory/memory.memsw.limit_in_bytes" ] || + { [ -e "/sys/fs/cgroup/system.slice/memory.swap.max" ] && [ "${LXCFS_SUPPORTS_SWAP_ACCOUNTING}" -eq 1 ]; }; then lxc config set c1 limits.memory 128MiB [ "$(lxc exec c1 -- grep ^MemTotal /proc/meminfo)" = "MemTotal: 131072 kB" ]