linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: alexs@kernel.org
To: Vitaly Wool <vitaly.wool@konsulko.com>,
	Miaohe Lin <linmiaohe@huawei.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	minchan@kernel.org, willy@infradead.org,
	senozhatsky@chromium.org, david@redhat.com, 42.hyeyoo@gmail.com
Cc: Alex Shi <alexs@kernel.org>
Subject: [PATCH 00/20] mm/zsmalloc: add zpdesc memory descriptor for zswap.zpool
Date: Fri, 28 Jun 2024 11:11:15 +0800	[thread overview]
Message-ID: <20240628031138.429622-1-alexs@kernel.org> (raw)

From: Alex Shi <alexs@kernel.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 zsmalloc 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 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 could save 123Kbyetes zsmalloc.o size.

Thanks
Alex

Alex Shi (8):
  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: introduce __zpdesc_clear_movable
  mm/zsmalloc: introduce __zpdesc_clear_zsmalloc
  mm/zsmalloc: introduce __zpdesc_set_zsmalloc()

Hyeonggon Yoo (12):
  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/zsmalloc: convert get/set_first_obj_offset() to take zpdesc

 mm/zpdesc.h   | 134 +++++++++++++++
 mm/zsmalloc.c | 454 +++++++++++++++++++++++++++-----------------------
 2 files changed, 384 insertions(+), 204 deletions(-)
 create mode 100644 mm/zpdesc.h

-- 
2.43.0



             reply	other threads:[~2024-06-28  3:06 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-28  3:11 alexs [this message]
2024-06-28  3:11 ` [PATCH 01/20] mm/zsmalloc: add zpdesc memory descriptor for zswap.zpool alexs
2024-06-30 13:45   ` Hyeonggon Yoo
2024-07-01  3:03     ` Alex Shi
2024-07-01  3:40       ` Alex Shi
2024-07-01 13:42       ` Yosry Ahmed
2024-07-02  2:39         ` Alex Shi
2024-06-28  3:11 ` [PATCH 02/20] mm/zsmalloc: use zpdesc in trylock_zspage/lock_zspage alexs
2024-06-28  3:11 ` [PATCH 03/20] mm/zsmalloc: convert __zs_map_object/__zs_unmap_object to use zpdesc alexs
2024-06-28  3:11 ` [PATCH 04/20] mm/zsmalloc: add and use pfn/zpdesc seeking funcs alexs
2024-06-28  3:11 ` [PATCH 05/20] mm/zsmalloc: convert obj_malloc() to use zpdesc alexs
2024-06-28  3:11 ` [PATCH 06/20] mm/zsmalloc: convert create_page_chain() and its users " alexs
2024-06-28  3:11 ` [PATCH 07/20] mm/zsmalloc: convert obj_allocated() and related helpers " alexs
2024-06-28  3:11 ` [PATCH 08/20] mm/zsmalloc: convert init_zspage() " alexs
2024-06-28  3:11 ` [PATCH 09/20] mm/zsmalloc: convert obj_to_page() and zs_free() " alexs
2024-06-28  3:11 ` [PATCH 10/20] mm/zsmalloc: add zpdesc_is_isolated/zpdesc_zone helper for zs_page_migrate alexs
2024-06-28  3:11 ` [PATCH 11/20] mm/zsmalloc: rename reset_page to reset_zpdesc and use zpdesc in it alexs
2024-06-28  3:11 ` [PATCH 12/20] mm/zsmalloc: convert __free_zspage() to use zdsesc alexs
2024-06-28  3:11 ` [PATCH 13/20] mm/zsmalloc: convert location_to_obj() to take zpdesc alexs
2024-06-28  3:11 ` [PATCH 14/20] mm/zsmalloc: convert migrate_zspage() to use zpdesc alexs
2024-06-28  3:11 ` [PATCH 15/20] mm/zsmalloc: convert get_zspage() to take zpdesc alexs
2024-06-28  3:11 ` [PATCH 16/20] mm/zsmalloc: convert SetZsPageMovable and remove unused funcs alexs
2024-06-28  3:11 ` [PATCH 17/20] mm/zsmalloc: convert get/set_first_obj_offset() to take zpdesc alexs
2024-06-28  3:11 ` [PATCH 18/20] mm/zsmalloc: introduce __zpdesc_clear_movable alexs
2024-06-28  3:11 ` [PATCH 19/20] mm/zsmalloc: introduce __zpdesc_clear_zsmalloc alexs
2024-06-28  3:11 ` [PATCH 20/20] mm/zsmalloc: introduce __zpdesc_set_zsmalloc() alexs
2024-06-28  7:26 ` [PATCH 00/20] mm/zsmalloc: add zpdesc memory descriptor for zswap.zpool Alex Shi
2024-06-28  7:30   ` Alex Shi

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=20240628031138.429622-1-alexs@kernel.org \
    --to=alexs@kernel.org \
    --cc=42.hyeyoo@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=linmiaohe@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=senozhatsky@chromium.org \
    --cc=vitaly.wool@konsulko.com \
    --cc=willy@infradead.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;
as well as URLs for NNTP newsgroup(s).