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]>

