On Wed, Apr 1, 2026 at 11:38 PM Li Wang <[email protected]> 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 <[email protected]>
> Cc: Johannes Weiner <[email protected]>
> Cc: Michal Hocko <[email protected]>
> Cc: Michal Koutný <[email protected]>
> Cc: Muchun Song <[email protected]>
> Cc: Nhat Pham <[email protected]>
> Cc: Tejun Heo <[email protected]>
> Cc: Roman Gushchin <[email protected]>
> Cc: Shakeel Butt <[email protected]>
> Cc: Yosry Ahmed <[email protected]>
> ---
>
> 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 :)

Acked-by: Nhat Pham <[email protected]>

Reply via email to