From: Nhat Pham <nphamcs@gmail.com>
To: Chengming Zhou <zhouchengming@bytedance.com>
Cc: Vitaly Wool <vitaly.wool@konsulko.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Seth Jennings <sjenning@redhat.com>,
Dan Streetman <ddstreet@ieee.org>,
Andrew Morton <akpm@linux-foundation.org>,
Yosry Ahmed <yosryahmed@google.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/7] mm/zswap: optimize the scalability of zswap rb-tree
Date: Thu, 7 Dec 2023 10:15:32 -0800 [thread overview]
Message-ID: <CAKEwX=NX5T1AL6jXuW0oonW_GtPOos+oXdWGAE3hxdWQyavBPA@mail.gmail.com> (raw)
In-Reply-To: <6bf18314-7749-476e-aece-064ecfb0dffc@bytedance.com>
On Thu, Dec 7, 2023 at 7:18 AM Chengming Zhou
<zhouchengming@bytedance.com> wrote:
>
> On 2023/12/7 11:13, Chengming Zhou wrote:
> > On 2023/12/7 04:08, Nhat Pham wrote:
> >> On Wed, Dec 6, 2023 at 1:46 AM Chengming Zhou
> >> <zhouchengming@bytedance.com> wrote:
> >>> When testing the zswap performance by using kernel build -j32 in a tmpfs
> >>> directory, I found the scalability of zswap rb-tree is not good, which
> >>> is protected by the only spinlock. That would cause heavy lock contention
> >>> if multiple tasks zswap_store/load concurrently.
> >>>
> >>> So a simple solution is to split the only one zswap rb-tree into multiple
> >>> rb-trees, each corresponds to SWAP_ADDRESS_SPACE_PAGES (64M). This idea is
> >>> from the commit 4b3ef9daa4fc ("mm/swap: split swap cache into 64MB trunks").
> >>>
> >>> Although this method can't solve the spinlock contention completely, it
> >>> can mitigate much of that contention.
> >>
> >> By how much? Do you have any stats to estimate the amount of
> >> contention and the reduction by this patch?
> >
> > Actually, I did some test using the linux-next 20231205 yesterday.
> >
> > Testcase: memory.max = 2G, zswap enabled, make -j32 in tmpfs.
> >
> > 20231205 +patchset
> > 1. !shrinker_enabled: 156s 126s
> > 2. shrinker_enabled: 79s 70s
> >
> > I think your zswap shrinker fix patch can solve !shrinker_enabled case.
> >
> > So will test again today using the new mm-unstable branch.
> >
>
> Updated test data based on today's mm-unstable branch:
>
> mm-unstable +patchset
> 1. !shrinker_enabled: 86s 74s
> 2. shrinker_enabled: 63s 61s
>
> Shows much less optimization for the shrinker_enabled case, but still
> much optimization for the !shrinker_enabled case.
>
> Thanks!
I'm gonna assume this is build time since it makes the zswap shrinker
look pretty good :)
I think this just means some of the gains between this patchset and
the zswap shrinker overlaps. But on the positive note:
a) Both are complementary, i.e enable both (bottom right corner) gives
us the best result.
b) Each individual change improves the runtime. If you disable the
shrinker, then this patch helps tremendously, so we're onto something.
c) The !shrinker_enabled is no longer *too* bad - once again, thanks
for noticing the regression and help me fix it! In fact, every cell
improves compared to the last run. Woohoo!
next prev parent reply other threads:[~2023-12-07 18:15 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-06 9:46 Chengming Zhou
2023-12-06 9:46 ` [PATCH 1/7] mm/zswap: make sure each swapfile always have " Chengming Zhou
2023-12-08 15:17 ` kernel test robot
2023-12-08 15:45 ` Chengming Zhou
2023-12-08 16:45 ` kernel test robot
2023-12-06 9:46 ` [PATCH 2/7] mm/zswap: split " Chengming Zhou
2023-12-06 9:46 ` [PATCH 3/7] mm/zswap: reuse dstmem when decompress Chengming Zhou
2023-12-12 22:58 ` Nhat Pham
2023-12-13 2:41 ` Chengming Zhou
2023-12-06 9:46 ` [PATCH 4/7] mm/zswap: change dstmem size to one page Chengming Zhou
2023-12-06 17:12 ` Nhat Pham
2023-12-07 2:59 ` Chengming Zhou
2023-12-06 9:46 ` [PATCH 5/7] mm/zswap: refactor out __zswap_load() Chengming Zhou
2023-12-12 23:13 ` Nhat Pham
2023-12-13 2:46 ` Chengming Zhou
2023-12-06 9:46 ` [PATCH 6/7] mm/zswap: cleanup zswap_load() Chengming Zhou
2023-12-06 9:46 ` [PATCH 7/7] mm/zswap: cleanup zswap_reclaim_entry() Chengming Zhou
2023-12-06 17:24 ` [PATCH 0/7] mm/zswap: optimize the scalability of zswap rb-tree Nhat Pham
2023-12-06 20:41 ` Yosry Ahmed
2023-12-07 0:43 ` Chris Li
2023-12-07 3:25 ` Chengming Zhou
2023-12-12 23:26 ` Yosry Ahmed
2023-12-12 23:33 ` Nhat Pham
2023-12-13 2:57 ` Chengming Zhou
2023-12-06 20:08 ` Nhat Pham
2023-12-07 3:13 ` Chengming Zhou
2023-12-07 15:18 ` Chengming Zhou
2023-12-07 18:15 ` Nhat Pham [this message]
2023-12-07 18:57 ` Nhat Pham
2023-12-08 15:41 ` Chengming Zhou
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='CAKEwX=NX5T1AL6jXuW0oonW_GtPOos+oXdWGAE3hxdWQyavBPA@mail.gmail.com' \
--to=nphamcs@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=ddstreet@ieee.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=sjenning@redhat.com \
--cc=vitaly.wool@konsulko.com \
--cc=yosryahmed@google.com \
--cc=zhouchengming@bytedance.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox