From: Hao Jia <jiahao.kernel@gmail.com>
To: Yosry Ahmed <yosry@kernel.org>
Cc: akpm@linux-foundation.org, tj@kernel.org, hannes@cmpxchg.org,
shakeel.butt@linux.dev, mhocko@kernel.org, mkoutny@suse.com,
nphamcs@gmail.com, chengming.zhou@linux.dev,
muchun.song@linux.dev, roman.gushchin@linux.dev,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-doc@vger.kernel.org, Hao Jia <jiahao1@lixiang.com>
Subject: Re: [PATCH 2/2] mm/zswap: Support batch writeback in shrink_memcg()
Date: Thu, 16 Jul 2026 10:54:37 +0800 [thread overview]
Message-ID: <b910e870-9583-a2f5-b681-e69edb9af290@gmail.com> (raw)
In-Reply-To: <CAO9r8zOFg_mnNGbFFd_h8FAwRCbQ9vXk47EF5f1CLg1cDVGB5Q@mail.gmail.com>
On 2026/7/16 00:14, Yosry Ahmed wrote:
>>>> Test Setup:
>>>> Total memory: 32 GB.
>>>> zswap settings: max_pool_percent=1, accept_threshold_percent=50,
>>>> shrinker_enabled=N.
>>>> Allocate 512MB of anonymous pages and fill them with random data (to avoid
>>>> compression), then use cgroup memory.reclaim to force a large amount of
>>>> anonymous pages into zswap. At an interval of 2ms, allocate a 4K anonymous
>>>> page where the first 4 bytes are random numbers and the rest are zeros, and
>>>> then trigger a reclamation of this 4K anonymous page through cgroup
>>>> memory.reclaim. When the pool threshold is reached, shrink_memcg() will
>>>> be triggered.
>>>>
>>>> The test data after running for 120s is as follows:
>>>> Baseline Patched
>>>> shrink_worker wakeups 5363 85
>>>> shrink_memcg calls 11,345,012 188,264
>>>> written_back 40214 40275
>>>>
>>>> Conclusion:
>>>> Under the same workload and run duration, the patched kernel shows a
>>>> significant reduction in both shrink_worker wakeups and shrink_memcg calls.
>>>
>>> Please also include data from the case where zswap store failures are
>>> observed and pages go to disk, and compare before and after this
>>> patch. I think that part is also really important.
>>
>> I retested and added some collected information. Perhaps
>> `pool_limit_hit` and `pswpout` can explain that batch shrinking of zswap
>> can reduce the number of pages that fail to be stored due to the pool
>> limit, allowing zswap to skip zswap and go directly to disk.
>
> Oh I meant the other test case with high memory pressure where we saw
> a lot more writeback with this patch. Do you have similar data from
> that test case?
>
Below are the results from stress-ng (high memory pressure case), which
lead to a similar conclusion:
Baseline Patched
shrink_worker wakeups 5,640 987
shrink_memcg calls 8,481,500 2,504,818
written_back pages 260 768,576
zswap_store calls 2,742,756 2,301,414
store succeeded (ret=1) 934,640 1,308,686
store rejected (ret=0) 1,808,116 992,728 <-
store reject rate ~65% ~43%
pool_limit_hit delta 1,181,310 101,593 <-
pswpout 1,808,376 1,761,304
pswpin 4,288,497 3,902,658
pswpout = store rejected + written_back pages
Note that pswpout comprises two parts: the store rejected count (where
we skip zswap and go directly to disk) and the number of pages written
back by shrink_memcg().
Therefore, we can directly leverage store rejected to evaluate the
scenario where zswap is skipped and pages bypass it to disk. This
provides a much clearer picture than looking at pswpout alone.
Do we need to include both sets of test results along with the
comparison data in the final commit message?
Thanks,
Hao
>>
>> Baseline Patched
>> shrink_worker wakeups 5,363 85
>> shrink_memcg calls 11,373,201 180,928
>> written_back pages 40,212 40,236
>> zswap_store calls 161,190 168,741
>> store succeeded (ret=1) 102,743 127,644
>> store rejected (ret=0) 58,447 41,097
>> store reject rate ~36% ~24%
>> pool_limit_hit delta 55,826 14,062
>> pswpout 98,659 81,333
>> pswpin 2 1
>>
>>
>> Thanks,
>> Hao
next prev parent reply other threads:[~2026-07-16 2:54 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-14 8:15 [PATCH 0/2] mm/zswap: Fixes and improves the zswap global shrinker Hao Jia
2026-07-14 8:15 ` [PATCH 1/2] mm/zswap: Fix global shrinker when memory cgroup is disabled Hao Jia
2026-07-14 16:52 ` Yosry Ahmed
2026-07-15 2:31 ` Andrew Morton
2026-07-15 12:30 ` Hao Jia
2026-07-15 16:13 ` Yosry Ahmed
2026-07-16 2:21 ` Hao Jia
2026-07-16 18:18 ` Nhat Pham
2026-07-14 8:15 ` [PATCH 2/2] mm/zswap: Support batch writeback in shrink_memcg() Hao Jia
2026-07-14 16:52 ` Yosry Ahmed
2026-07-15 11:28 ` Hao Jia
2026-07-15 16:14 ` Yosry Ahmed
2026-07-16 2:54 ` Hao Jia [this message]
2026-07-16 18:04 ` Nhat Pham
2026-07-16 20:35 ` Yosry Ahmed
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=b910e870-9583-a2f5-b681-e69edb9af290@gmail.com \
--to=jiahao.kernel@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=chengming.zhou@linux.dev \
--cc=hannes@cmpxchg.org \
--cc=jiahao1@lixiang.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--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 \
/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.