All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baoquan He <baoquan.he@linux.dev>
To: Nhat Pham <nphamcs@gmail.com>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org, chrisl@kernel.org,
	kasong@tencent.com, shikemeng@huaweicloud.com, baohua@kernel.org,
	youngjun.park@lge.com, hannes@cmpxchg.org, yosry@kernel.org,
	chengming.zhou@linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 00/10] mm/swap: ghost swapfile with backend switching via Redirect entries
Date: Mon, 27 Jul 2026 23:05:24 +0800	[thread overview]
Message-ID: <amdztP2ocfqTZn7J@MiWiFi-R3L-srv> (raw)
In-Reply-To: <CAKEwX=Pm_C6OD1jAo818wzFVVhLwgVFu-4bLdNrmUZ01URpLTQ@mail.gmail.com>

Hi Nhat,

On 07/15/26 at 09:17am, Nhat Pham wrote:
> On Wed, Jul 15, 2026 at 7:19 AM Baoquan He <baoquan.he@linux.dev> wrote:
...snip...
> > Part of above sentence is missing. I meant if you agree on the ghost
> > solution, you can change to take its way and continue, just add me to
> > CC. Or we can work together.
> 
> How about this - let's solve one piece of the puzzle together, one at a time.

I took your suggestion to heart.  I've been working on the first piece:
dynamic cluster management for xswap (vswap) devices — the VM_SPARSE
vmalloc approach for growing and shrinking the cluster_info array on
demand.

The series is 10 patches (plus Chris's xswap base patch) and I just
posted it:

  https://lore.kernel.org/all/20260727135029.1059441-1-baoquan.he@linux.dev/

The idea is simple: instead of allocating the full cluster_info[] at
swapon, we back it with a VM_SPARSE vmalloc area that maps physical
pages lazily as clusters are allocated, and unmaps them from the tail
when enough contiguous free clusters accumulate.  Lookup stays O(1)
via array indexing — no extra xarray in the cluster access path.

Once the dynamic cluster management lands, you'd add the per-slot
backend pointer, writeback, and rmap on top — without changing the
cluster_info lookup path.

The shrink is coarser than what xarray could do (full pages at a time,
not individual clusters), but for the initial landing where swap usage
tends to be ratchet-like, I think this is a reasonable trade-off.  If
the need arises, we can always revisit the shrink granularity later.

Curious to hear what you think — especially whether this provides the
cluster management your VS series needs.

Thanks
Baoquan

> 
> First, your optimization patch series. Have you taken a look at my
> proposal ([1])? I believe that design should be cleaner, while still
> allowing you to put it all you want to get (elimination of xarray
> being the chief benefit), without requiring you to modify swap cache
> and swap count operations (since you don't have to move the metadata
> in and out of struct zswap_entry). It does require a bit more code to
> dynamically allocated the backend array, but should be trivial IMHO.
> 
> [1]: https://lore.kernel.org/all/CAKEwX=OvR7GbU_9f2h_MtU4m0g6s-esHmNQKYNhJz610M0P3Sw@mail.gmail.com/
> 
> Next, if you just want pure ghost swapfile without writeback support,
> maybe something similar to the first 2 patches in my RFC? i.e up to
> this patch:
> 
> https://lore.kernel.org/all/20260612193738.2183968-3-nphamcs@gmail.com/
> 
> I'm sure you could find issues/bugs in it too with some extensive
> testing (a lot of my performance testing is done on the entire series
> as a whole), but from a design point of view it should achieve what us
> both want, no? It's literally just a ghost swap device - most of the
> other design elements of vswap (the new charging behavior, rmap,
> support for writeback) comes in latter patches. I think the difference
> is:
> 
> 1. It's transparently dynamic, whereas in your RFC it's driven by a
> userspace knob. Do you think there are inherent values in a userspace
> knob?
> 
> 2. The address space can also shrink when swap usage drops at runtime.
> 
> 3. The dynamic address space is backed by an xarray. Note that it's
> structured differently than zswap's one (it's an xarray pointing to
> clusters). If you have rationales or numbers to show that vmalloc
> array is superior (while still support the kernel-driven expansion and
> shrink), please let me know.
> 
> If you have no faith in me and do not like my code, you can take the
> code as a starting point, or just the idea, and drive it yourself. Or
> let me know if you're unhappy with any piece of it - we can discuss
> further.
> 
> >
> > > Otherwise, please continue to push virtual swap forward. I'll stop and
> > > wait.
> 
> Look man, I care about the problems being solved and I'm a sucker for
> good ideas, but I'm not married to anything, be it my code or my
> ideas.
> 
> I have literally dropped my old code and adopted Kairui's suggestions
> after playing with it and liking it, to make sure every party's
> concern is met.
> 
> If you have concerns, please let me know, or keep sending code if you
> believe you can get it done better than I do :) All I'm asking is you
> take my concerns into account in your design.

  parent reply	other threads:[~2026-07-27 15:05 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-07  8:26 [RFC PATCH 00/10] mm/swap: ghost swapfile with backend switching via Redirect entries Baoquan He
2026-07-07  8:26 ` [RFC PATCH 01/10] mm: ghost swapfile support for zswap Baoquan He
2026-07-07  8:26 ` [RFC PATCH 02/10] mm/swap_table: add Redirect entry encoding for ghost swap backend switching Baoquan He
2026-07-07  8:26 ` [RFC PATCH 03/10] mm/swap: add redirect_xa field and ghost redirect helper declarations Baoquan He
2026-07-07  8:26 ` [RFC PATCH 04/10] mm/swapfile: implement ghost redirect helpers and free-path cascade Baoquan He
2026-07-07  8:26 ` [RFC PATCH 05/10] mm/swap_state: restore Redirect entry when swap cache folio is removed Baoquan He
2026-07-07  8:26 ` [RFC PATCH 06/10] mm/zswap: implement ghost-to-physical writeback for backend switching Baoquan He
2026-07-07  8:26 ` [RFC PATCH 07/10] mm/page_io: forward ghost swap reads to physical device via Redirect Baoquan He
2026-07-07  8:26 ` [RFC PATCH 08/10] mm/swapfile: manage ghost cluster_info via lazy vmalloc Baoquan He
2026-07-07  8:26 ` [RFC PATCH 09/10] mm/swapfile: implement swap_ghost_extend_max() for dynamic growth Baoquan He
2026-07-07 22:36   ` Nhat Pham
2026-07-09 14:52     ` Baoquan He
2026-07-10  1:11       ` Nhat Pham
2026-07-11  9:02   ` Chris Li
2026-07-07  8:26 ` [RFC PATCH 10/10] mm/swapfile: add sysfs interface for ghost swap extension Baoquan He
2026-07-07  8:56 ` [RFC PATCH 00/10] mm/swap: ghost swapfile with backend switching via Redirect entries Baoquan He
2026-07-07 21:23 ` Nhat Pham
2026-07-07 21:25   ` Nhat Pham
2026-07-09 11:38   ` Baoquan He
2026-07-13  0:02     ` Nhat Pham
2026-07-13 17:47       ` Chris Li
2026-07-15 11:21       ` Baoquan He
2026-07-15 14:19         ` Baoquan He
2026-07-15 16:17           ` Nhat Pham
2026-07-15 23:03             ` Chris Li
2026-07-16 16:49               ` Nhat Pham
2026-07-16 16:58                 ` Nhat Pham
2026-07-17 14:27                 ` Baoquan He
2026-07-17 16:02                   ` Nhat Pham
2026-07-21  8:06                     ` Baoquan He
2026-07-21 18:03                       ` Chris Li
2026-07-21 18:27                         ` Nhat Pham
2026-07-21 18:58                           ` Nhat Pham
2026-07-21 22:14                           ` Chris Li
2026-07-21 18:24                 ` Chris Li
2026-07-21 18:37                   ` Nhat Pham
2026-07-21 22:29                     ` Chris Li
2026-07-27 15:05             ` Baoquan He [this message]
2026-07-11  8:49 ` Chris Li

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=amdztP2ocfqTZn7J@MiWiFi-R3L-srv \
    --to=baoquan.he@linux.dev \
    --cc=akpm@linux-foundation.org \
    --cc=baohua@kernel.org \
    --cc=chengming.zhou@linux.dev \
    --cc=chrisl@kernel.org \
    --cc=hannes@cmpxchg.org \
    --cc=kasong@tencent.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=nphamcs@gmail.com \
    --cc=shikemeng@huaweicloud.com \
    --cc=yosry@kernel.org \
    --cc=youngjun.park@lge.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.