From: YoungJun Park <youngjun.park@lge.com>
To: Yosry Ahmed <yosry@kernel.org>
Cc: Shakeel Butt <shakeel.butt@linux.dev>,
Hao Jia <jiahao.kernel@gmail.com>,
Johannes Weiner <hannes@cmpxchg.org>,
mhocko@kernel.org, tj@kernel.org, mkoutny@suse.com,
roman.gushchin@linux.dev, Nhat Pham <nphamcs@gmail.com>,
akpm@linux-foundation.org, chengming.zhou@linux.dev,
muchun.song@linux.dev, cgroups@vger.kernel.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
linux-doc@vger.kernel.org, Hao Jia <jiahao1@lixiang.com>,
chrisl@kernel.org, kasong@tencent.com, baoquan.he@linux.dev,
joshua.hahnjy@gmail.com
Subject: Re: [swap tier discussion] Re: [PATCH v3 2/4] mm/zswap: Implement proactive writeback
Date: Tue, 16 Jun 2026 10:03:08 +0900 [thread overview]
Message-ID: <ajCgzNIPLhjTRSXR@yjaykim-PowerEdge-T330> (raw)
In-Reply-To: <CAO9r8zOVqbJEaBqTHw=r2bYw7Lm1tO0TU9QuG+eH1rfqcTAJJQ@mail.gmail.com>
On Mon, Jun 15, 2026 at 12:55:09PM -0700, Yosry Ahmed wrote:
> > In that case, the internal logic could stay roughly the same rather
> > than counting via a page counter. Something like:
> >
> > 1. Change the interface shell: tier.*.max — allow only 0 ~ max.
>
> What about a single interface as I suggested to remain consistent with
> memory tiering?
Hello Yosry!
I agree. As I was implementing the interface for seeing feasibility
, I reconsidered it. Since swap tiers can be added or removed at runtime,
having static memory."tier_name".max files seems unnatural.
A single interface like `swap.tiers.max` would be better. We can use a
flat-keyed format (similar to io.weight. same as you suggested)
echo ["tier_name"] ["0 or max"] > swap.tiers.max
I am now leaning towards this is a better direction than what I initially
suggested (memory.swap.tiers and memory.swap.tiers.effective).
Considering other reviews and Shakeel's reply, I will update my swap tier
patch accordingly.
> > 2. Keep the internal logic as is: 0 disables the mask (child memcgs
> > off too), max enables it (child memcgs on too).
>
> I think a child should be able to disable a swap tier enabled by the
> parent, but not vice versa.
Yes, we are on the same page. I missed a part in my explanation. I meant
that the child's selected tiers should be a subset of the parent's (which
is how the current swap tier suggestion works).
A child cannot enable a tier that the parent has disabled.
> > 3. memory.zswap.max integrates naturally (it's memory."tier_name".max).
>
> Not really. memory.zswap.max is in terms of memory usage (compressed
> size), not swap usage (uncompressed size).
I see, memory.zswap.max needs to be maintained separately. I will look
closer into its semantics. I might have misunderstood this part!
> [..]
> > Let me clarify a part I wrote confusingly. Handling
> > memory.zswap.writeback via tiers is possible, but I don't think the
> > interface itself would be replaced even if memory.swap.tiers is adopted.
> >
> > Selecting only zswap in memory.swap.tiers would not just disable
> > writeback.it would also block regular swap entirely, which differs
> > slightly from the current semantic. (... "Per the cgroup v2 docs: a
> > zswap-only tier setting is subtly different from setting
> > memory.swap.max to 0, since it still allows pages to be written to the
> > zswap pool; this has no effect if zswap is disabled, and swapping is
> > allowed unless memory.swap.max is set to 0.")
>
> I don't understand. How is disabling zswap writeback not equivalent to
> only enabling zswap as a tier?
Isn't there a case where zswap_store() fails and pages fall back to the
backing swap device?
- "zswap tier only": Only zswap is allowed. Fallback to other swap is
blocked.
- "zswap writeback disabled": zswap is allowed, but if zswap_store()
fails, pages can still fall back to other swap devices.
Because of this slight semantic difference, I thought they couldn't be
fully unified. If my understanding is correct, we could extend the zswap
tier to select the target swap device for writeback, but replacing the
writeback interface entirely might be difficult.
> Do you just mean the fact that disabling zswap writeback is a noop of
> zswap is disabled? It's a different interface so I think a small
Yes, I think so too.
> semantic difference is okay. In practice, I doubt that zswap is being
> disabled at runtime.
I thought disabling zswap at runtime might have some use cases, but we
can discuss this further when we talk about the patch extending the
zswap tier.
Best regards,
Youngjun
next prev parent reply other threads:[~2026-06-16 1:03 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-26 11:45 [PATCH v3 0/4] mm/zswap: Implement per-cgroup proactive writeback Hao Jia
2026-05-26 11:45 ` [PATCH v3 1/4] mm/zswap: Make shrink_worker writeback cursor per-memcg Hao Jia
2026-05-29 19:51 ` Nhat Pham
2026-05-30 1:24 ` Yosry Ahmed
2026-06-01 11:07 ` Hao Jia
2026-06-01 16:44 ` Nhat Pham
2026-06-01 16:47 ` Nhat Pham
2026-06-01 17:08 ` Nhat Pham
2026-06-02 11:32 ` Hao Jia
2026-06-02 0:31 ` Yosry Ahmed
2026-06-02 11:33 ` Hao Jia
2026-06-02 23:19 ` Yosry Ahmed
2026-06-03 3:02 ` Hao Jia
2026-06-03 17:53 ` Yosry Ahmed
2026-06-04 1:58 ` Hao Jia
2026-06-04 5:34 ` Yosry Ahmed
2026-06-04 13:06 ` Hao Jia
2026-06-04 16:10 ` Yosry Ahmed
2026-06-04 17:23 ` Nhat Pham
2026-06-08 12:50 ` Hao Jia
2026-06-08 16:23 ` Nhat Pham
2026-06-08 16:44 ` Yosry Ahmed
2026-06-08 16:48 ` Yosry Ahmed
2026-06-08 18:01 ` Nhat Pham
2026-06-09 3:18 ` Hao Jia
2026-06-11 17:39 ` Yosry Ahmed
2026-06-12 16:40 ` Shakeel Butt
2026-06-12 18:15 ` Yosry Ahmed
2026-06-15 2:45 ` Hao Jia
2026-05-26 11:45 ` [PATCH v3 2/4] mm/zswap: Implement proactive writeback Hao Jia
2026-05-29 19:58 ` Nhat Pham
2026-05-30 1:40 ` Yosry Ahmed
2026-06-03 11:22 ` Hao Jia
2026-06-03 17:58 ` Yosry Ahmed
2026-06-03 18:14 ` Nhat Pham
2026-06-04 2:11 ` Hao Jia
2026-06-04 5:36 ` Yosry Ahmed
2026-06-08 18:30 ` Shakeel Butt
2026-06-08 19:50 ` Shakeel Butt
2026-06-08 20:19 ` Yosry Ahmed
2026-06-08 22:22 ` Shakeel Butt
2026-06-08 22:27 ` Yosry Ahmed
2026-06-09 4:19 ` YoungJun Park
2026-06-11 17:45 ` Yosry Ahmed
2026-06-11 19:12 ` Shakeel Butt
2026-06-12 7:27 ` YoungJun Park
2026-06-12 17:02 ` [swap tier discussion] " Shakeel Butt
2026-06-12 21:31 ` Yosry Ahmed
2026-06-14 9:23 ` YoungJun Park
2026-06-15 19:55 ` Yosry Ahmed
2026-06-16 1:03 ` YoungJun Park [this message]
2026-06-16 3:08 ` YoungJun Park
2026-06-16 17:30 ` Yosry Ahmed
2026-06-16 11:44 ` Shakeel Butt
2026-05-30 1:37 ` Yosry Ahmed
2026-06-03 11:27 ` Hao Jia
2026-06-03 17:55 ` Yosry Ahmed
2026-06-03 18:23 ` Nhat Pham
2026-06-03 18:26 ` Yosry Ahmed
2026-06-03 18:34 ` Nhat Pham
2026-06-03 18:43 ` Yosry Ahmed
2026-06-03 18:51 ` Nhat Pham
2026-06-03 18:54 ` Yosry Ahmed
2026-05-26 11:46 ` [PATCH v3 3/4] mm/zswap: Add per-memcg stat for " Hao Jia
2026-05-29 20:01 ` Nhat Pham
2026-06-03 11:29 ` Hao Jia
[not found] ` <20260526114601.67041-5-jiahao.kernel@gmail.com>
2026-05-29 20:02 ` [PATCH v3 4/4] selftests/cgroup: Add tests for zswap " Nhat Pham
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=ajCgzNIPLhjTRSXR@yjaykim-PowerEdge-T330 \
--to=youngjun.park@lge.com \
--cc=akpm@linux-foundation.org \
--cc=baoquan.he@linux.dev \
--cc=cgroups@vger.kernel.org \
--cc=chengming.zhou@linux.dev \
--cc=chrisl@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=jiahao.kernel@gmail.com \
--cc=jiahao1@lixiang.com \
--cc=joshua.hahnjy@gmail.com \
--cc=kasong@tencent.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox