Re: [PATCH v6 6/8] selftest/cgroup: fix zswap test_no_invasive_cgroup_shrink on large pagesize system

Nhat Pham
2026-04-13T00:29:49Z

On Wed, Apr 1, 2026 at 11:38 PM Li Wang <liwang@redhat.com> wrote:
>
> test_no_invasive_cgroup_shrink sets up two cgroups: wb_group, which is
> expected to trigger zswap writeback, and a control group (renamed to
> zw_group), which should only have pages sitting in zswap without any
> writeback.
>
> There are two problems with the current test:
>
> 1) The data patterns are reversed. wb_group uses allocate_bytes(), which
> writes only a single byte per page — trivially compressible,
> especially by zstd — so compressed pages fit within zswap.max and
> writeback is never triggered. Meanwhile, the control group uses
> getrandom() to produce hard-to-compress data, but it is the group
> that does *not* need writeback.
>
> 2) The test uses fixed sizes (10K zswap.max, 10MB allocation) that are
> too small on systems with large PAGE_SIZE (e.g. 64K), failing to
> build enough memory pressure to trigger writeback reliably.
>
> Fix both issues by:
> - Swapping the data patterns: fill wb_group pages with partially
> random data (getrandom for page_size/4 bytes) to resist compression
> and trigger writeback, and fill zw_group pages with simple repeated
> data to stay compressed in zswap.
> - Making all size parameters PAGE_SIZE-aware: set allocation size to
> PAGE_SIZE * 1024, memory.zswap.max to PAGE_SIZE, and memory.max to
> allocation_size / 2 for both cgroups.
> - Allocating memory inline instead of via cg_run() so the pages
> remain resident throughout the test.
>
> === Error Log ===
> # getconf PAGESIZE
> 65536
>
> # ./test_zswap
> TAP version 13
> ...
> ok 5 test_zswap_writeback_disabled
> ok 6 # SKIP test_no_kmem_bypass
> not ok 7 test_no_invasive_cgroup_shrink

I assume the test passed after fix? ;)

>
> Signed-off-by: Li Wang <liwang@redhat.com>
> Cc: Johannes Weiner <hannes@cmpxchg.org>
> Cc: Michal Hocko <mhocko@kernel.org>
> Cc: Michal Koutný <mkoutny@suse.com>
> Cc: Muchun Song <muchun.song@linux.dev>
> Cc: Nhat Pham <nphamcs@gmail.com>
> Cc: Tejun Heo <tj@kernel.org>
> Cc: Roman Gushchin <roman.gushchin@linux.dev>
> Cc: Shakeel Butt <shakeel.butt@linux.dev>
> Cc: Yosry Ahmed <yosryahmed@google.com>
> ---
>
> Notes:
> v5:
> - Swap data patterns: use getrandom() for wb_group and simple
> memset for zw_group to fix the reversed allocation logic.
> - Rename control_group to zw_group for clarity.
> - Allocate memory inline instead of via cg_run() so pages remain
> resident throughout the test.
>
> tools/testing/selftests/cgroup/test_zswap.c | 70 ++++++++++++++-------
> 1 file changed, 49 insertions(+), 21 deletions(-)

LGTM. Thanks for fixing the tests :)