On Mon, Apr 13, 2026 at 8:29 AM Nhat Pham <[email protected]> wrote: > > 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? ;)
That's right! This patchset is targeted to thoroughly fix various bugs. I rerun it too many times on various arches. All works well :). > > 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]> Thanks a lot! -- Regards, Li Wang

