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


Reply via email to