All of lore.kernel.org
 help / color / mirror / Atom feed
From: Li Wang <liwang@redhat.com>
To: Yosry Ahmed <yosry@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	longman@redhat.com, yosryahmed@google.com, nphamcs@gmail.com,
	hannes@cmpxchg.org, mhocko@kernel.org, mkoutny@suse.com,
	muchun.song@linux.dev, tj@kernel.org, roman.gushchin@linux.dev,
	shakeel.butt@linux.dev, linux-kselftest@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH v4 0/7] selftests/cgroup: improve zswap tests robustness and support large page sizes
Date: Wed, 25 Mar 2026 15:21:17 +0800	[thread overview]
Message-ID: <acOM7duMf-9plHAC@redhat.com> (raw)
In-Reply-To: <acN-BsPf0OR50sTP@redhat.com>

On Wed, Mar 25, 2026 at 02:17:42PM +0800, Li Wang wrote:
> > In summary, the problem is that 'zswpwb' does not update when zswap is executed
> > under the zstd algorithm. I'd debugging this issue separately from the kernel side.

Plz ignore above test logs and conclusion.

> I forgot to mention, this issue only observed on systems with a 64K
> pagesize (ppc64le, aarch64). I changed the aarch64 page size to 4K,
> and it passed the test every time.

Well, finally, I think I've found the root cause of the failure of
test_no_invasive_cgroup_shrink.

The test sets up two cgroups:
  wb_group, which is expected to trigger zswap writeback,
  control_group, which should have pages in zswap but must not experience any writeback.

However, the data patterns used for each group are reversed:

wb_group uses allocate_bytes(), which only writes a single byte per page (mem[i] = 'a').
The rest of each page is effectively zero. This data is trivially compressible,
especially by zstd, so the compressed pages easily fit within zswap.max and writeback
is never triggered.

control_group, on the other hand, uses getrandom() to dirty 1/4 of each page, producing
data that is much harder to compress. Ironically, this is the group that does not need
to trigger writeback.

So the test has the hard-to-compress data in the wrong cgroup. The fix is to swap the
allocation patterns: wb_group should use the partially random data to ensure its
compressed pages exceed zswap.max and trigger writeback, while control_group only
needs simple, easily compressible data to occupy zswap.

I have confirmed this when I reverse the two partens and get all passed
on both lzo and zstd.

Will fix in next patch version.

-- 
Regards,
Li Wang


      reply	other threads:[~2026-03-25  7:21 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-22  6:10 [PATCH v4 0/7] selftests/cgroup: improve zswap tests robustness and support large page sizes Li Wang
2026-03-22  6:10 ` [PATCH v4 1/7] selftests/cgroup: skip test_zswap if zswap is globally disabled Li Wang
2026-03-24  0:13   ` Yosry Ahmed
2026-03-24  6:46     ` Li Wang
2026-03-27 18:21   ` Nhat Pham
2026-03-22  6:10 ` [PATCH v4 2/7] selftests/cgroup: avoid OOM in test_swapin_nozswap Li Wang
2026-03-22  6:10 ` [PATCH v4 3/7] selftests/cgroup: use runtime page size for zswpin check Li Wang
2026-03-22  6:10 ` [PATCH v4 4/7] selftests/cgroup: rename PAGE_SIZE to BUF_SIZE in cgroup_util Li Wang
2026-03-22  6:10 ` [PATCH v4 5/7] selftests/cgroup: replace hardcoded page size values in test_zswap Li Wang
2026-03-24  0:05   ` Yosry Ahmed
2026-03-22  6:10 ` [PATCH v4 6/7] selftest/cgroup: fix zswap test_no_invasive_cgroup_shrink on large pagesize system Li Wang
2026-03-22  6:10 ` [PATCH v4 7/7] selftest/cgroup: fix zswap attempt_writeback() on 64K " Li Wang
2026-03-22 16:18 ` [PATCH v4 0/7] selftests/cgroup: improve zswap tests robustness and support large page sizes Andrew Morton
2026-03-23  3:23   ` Li Wang
2026-03-24  0:12     ` Yosry Ahmed
2026-03-24 12:16       ` Li Wang
2026-03-24 20:28         ` Yosry Ahmed
2026-03-25  2:26           ` Li Wang
2026-03-25  2:49             ` Yosry Ahmed
2026-03-25  6:12               ` Li Wang
2026-03-25  6:17                 ` Li Wang
2026-03-25  7:21                   ` Li Wang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=acOM7duMf-9plHAC@redhat.com \
    --to=liwang@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=longman@redhat.com \
    --cc=mhocko@kernel.org \
    --cc=mkoutny@suse.com \
    --cc=muchun.song@linux.dev \
    --cc=nphamcs@gmail.com \
    --cc=roman.gushchin@linux.dev \
    --cc=shakeel.butt@linux.dev \
    --cc=tj@kernel.org \
    --cc=yosry@kernel.org \
    --cc=yosryahmed@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.