[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJD7tkbnmeVugfunffSovJf9FAgy9rhBVt_tx=nxUveLUfqVsA@mail.gmail.com>
Date: Mon, 24 Jun 2024 14:46:30 -0700
From: Yosry Ahmed <yosryahmed@...gle.com>
To: alexs@...nel.org
Cc: Vitaly Wool <vitaly.wool@...sulko.com>, Miaohe Lin <linmiaohe@...wei.com>,
Andrew Morton <akpm@...ux-foundation.org>, linux-kernel@...r.kernel.org,
linux-mm@...ck.org, minchan@...nel.org, willy@...radead.org,
senozhatsky@...omium.org, david@...hat.com, 42.hyeyoo@...il.com
Subject: Re: [PATCH 00/15] add zpdesc memory descriptor for zswap.zpool
On Thu, Jun 20, 2024 at 10:42 PM <alexs@...nel.org> wrote:
>
> From: Alex Shi <alexs@...nel.org>
>
> According to Metthew's plan, the page descriptor will be replace by a 8
> bytes mem_desc on destination purpose.
> https://lore.kernel.org/lkml/YvV1KTyzZ+Jrtj9x@casper.infradead.org/
>
> Here is a implement on z3fold to replace page descriptor by zpdesc,
> which is still overlay on struct page now. but it's a step move forward
> above destination.
>
> To name the struct zpdesc instead of z3fold_desc, since there are 3 zpool
> usages under zswap, zbud, z3fold, zsmalloc. It looks like we may extend the
> zpdesc to zbud and zsmalloc, combined their usage into one.
Please do not focus your development efforts on z3fold. We really want
to deprecate/remove it, as well as zbud eventually. See [1].
For zsmalloc, there is already an ongoing effort to split zsdesc from
struct page [2].
[1]https://lore.kernel.org/lkml/CAJD7tkbRF6od-2x_L8-A1QL3=2Ww13sCj4S3i4bNndqF+3+_Vg@mail.gmail.com/
[2]https://lore.kernel.org/lkml/20230713042037.980211-1-42.hyeyoo@gmail.com/
>
> For zpdesc(page), z3fold just uses the 5th member zppage_flag, which
> match with page.private. Potentially uses the first member flags for
> headless PG_locked, list_head lru and page.mapping|PAGE_MAPPING_MOVABLE
> for page migration.
>
> This patachset could save 26Kbyetes z3fold.o size, basely saving come
> from the page to folio conversion.
>
> Thanks a lot!
> Alex
>
> Alex Shi (15):
> mm/z3fold: add zpdesc struct and helper and use them in
> z3fold_page_isolate
> mm/z3fold: use zpdesc in z3fold_page_migrate
> mm/z3fold: use zpdesc in z3fold_page_putback
> mm/z3fold: use zpdesc in get/put_z3fold_header funcs
> mm/z3fold: use zpdesc in init_z3fold_page
> mm/z3fold: use zpdesc in free_z3fold_page
> mm/z3fold: convert page to zpdesc in __release_z3fold_page
> mm/z3fold: use zpdesc free_pages_work
> mm/z3fold: use zpdesc in z3fold_compact_page and do_compact_page
> mm/z3fold: use zpdesc in __z3fold_alloc
> mm/z3fold: use zpdesc in z3fold_alloc
> mm/z3fold: use zpdesc in free_z3fold_page and z3fold_free
> mm/z3fold: use zpdesc in z3fold_map/z3fold_unmap
> mm/z3fold: introduce __zpdesc_set_movable
> mm/z3fold: introduce __zpdesc_clear_movable
>
> mm/z3fold.c | 190 +++++++++++++++++++++++++++-------------------------
> mm/zpdesc.h | 87 ++++++++++++++++++++++++
> 2 files changed, 184 insertions(+), 93 deletions(-)
> create mode 100644 mm/zpdesc.h
>
> --
> 2.43.0
>
>
Powered by blists - more mailing lists