[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240902072136.578720-1-alexs@kernel.org>
Date: Mon, 2 Sep 2024 15:21:11 +0800
From: alexs@...nel.org
To: 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,
Yosry Ahmed <yosryahmed@...gle.com>,
nphamcs@...il.com
Cc: Alex Shi <alexs@...nel.org>
Subject: [PATCH v7 00/21] mm/zsmalloc: add zpdesc memory descriptor for zswap.zpool
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/
This patchset abstracts the memory descriptor used in zsmalloc by zswap/zram.
The descriptor still overlays the struct page; nothing has changed
in that regard. What this patchset accomplishes is the use of folios in
to save some code size, and the introduction of a new concept, zpdesc.
This patchset is just an initial step; it does not bias the potential
changes to kmem_alloc or larger zspage modifications.
To name the struct zpdesc instead of zsdesc, since there are still 3
zpools under zswap: zbud, z3fold, zsmalloc for now(z3fold maybe removed
soon), and we could easyly extend it to other zswap.zpool in needs.
For all zswap.zpools, they are all using single page since often used
under memory pressure. So the conversion via folio series helper is
better than page's for compound_head check saving.
For now, all zpools are using some page struct members, like page.flags
for PG_private/PG_locked. and list_head lru, page.mapping for page migration.
This patachset does not increase the descriptor size nor introduce any
functional changes, and could save about 122Kbytes zsmalloc.o size.
Thanks a lot for comments and suggestion from Yosry, Yoo, Sergey, Willy
and Vishal!
Thanks
Alex
---
v6->v7:
- rebase on akpm/mm-unstable on Aug 30
v5->v6:
- rebase on akpm/mm-unstable on Aug 4
- recover 2 helpers and update code comments according to Vishal's
comments on patch 1 and 6.
v4->v5:
- rebase on akpm/mm-unstable on Aug 8 + Stephen Rothwell's build fix.
- add a helper and update code comments according to Sergey's comments
- fold patch 20/21, remove 3 helpers functions according to Vishal's
comments
v3->v4:
- rebase on akpm/mm-unstable Jul 21
- fixed a build warning reported by LKP
- Add a comment update for struct page to zpdesc change
v2->v3:
- Fix LKP reported build issue
- Update the Usage of struct zpdesc fields.
- Rebase onto latest mm-unstable commit 2073cda629a4
v1->v2:
- Take Yosry and Yoo's suggestion to add more members in zpdesc,
- Rebase on latest mm-unstable commit 31334cf98dbd
Alex Shi (10):
mm/zsmalloc: add zpdesc memory descriptor for zswap.zpool
mm/zsmalloc: use zpdesc in trylock_zspage()/lock_zspage()
mm/zsmalloc: convert create_page_chain() and its users to use zpdesc
mm/zsmalloc: rename reset_page to reset_zpdesc and use zpdesc in it
mm/zsmalloc: convert SetZsPageMovable and remove unused funcs
mm/zsmalloc: convert get/set_first_obj_offset() to take zpdesc
mm/zsmalloc: introduce __zpdesc_clear_movable
mm/zsmalloc: introduce __zpdesc_clear/set_zsmalloc()
mm/zsmalloc: introduce zpdesc_clear_first() helper
mm/zsmalloc: update comments for page->zpdesc changes
Hyeonggon Yoo (11):
mm/zsmalloc: convert __zs_map_object/__zs_unmap_object to use zpdesc
mm/zsmalloc: add and use pfn/zpdesc seeking funcs
mm/zsmalloc: convert obj_malloc() to use zpdesc
mm/zsmalloc: convert obj_allocated() and related helpers to use zpdesc
mm/zsmalloc: convert init_zspage() to use zpdesc
mm/zsmalloc: convert obj_to_page() and zs_free() to use zpdesc
mm/zsmalloc: add zpdesc_is_isolated()/zpdesc_zone() helper for
zs_page_migrate()
mm/zsmalloc: convert __free_zspage() to use zdsesc
mm/zsmalloc: convert location_to_obj() to take zpdesc
mm/zsmalloc: convert migrate_zspage() to use zpdesc
mm/zsmalloc: convert get_zspage() to take zpdesc
mm/zpdesc.h | 147 +++++++++++++++
mm/zsmalloc.c | 490 +++++++++++++++++++++++++++-----------------------
2 files changed, 414 insertions(+), 223 deletions(-)
create mode 100644 mm/zpdesc.h
--
2.46.0
Powered by blists - more mailing lists