Re: [RFC PATCH v3 00/21] mm/zsmalloc: Split zsdesc from struct page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Nov 30, 2023 at 07:12:21PM +0900, Hyeonggon Yoo wrote:
> RFC v2: https://lore.kernel.org/linux-mm/20230713042037.980211-1-42.hyeyoo@xxxxxxxxx/
> 
> v2 -> v3:
>  - rebased to the latest mm-unstable
>  - adjusted comments from Sergey Senozhatsky (Moving zsdesc definition,
>    kerneldoc fix) and Yosry Ahmed (adding memcg_data field to zsdesc)
> 
> 
> V3 update is a bit late, but I still believe this is worth doing.
> It would be nice to get comments/reviews/acks from maintainers/people.
> 
> Cover Letter:
> 
> The purpose of this series is to define own memory descriptor for zsmalloc,
> instead of re-using various fields of struct page. This is a part of the
> effort to reduce the size of struct page to unsigned long and enable
> dynamic allocation of memory descriptors.
> 
> While [1] outlines this ultimate objective, the current use of struct page
> is highly dependent on its definition, making it challenging to separately
> allocate memory descriptors.
> 
> Therefore, this series introduces new descriptor for zsmalloc, called
> zsdesc. It overlays struct page for now, but will eventually be allocated
> independently in the future. And apart from dynamic allocation of descriptors,
> this is a nice cleanup.

And the new descriptor doesn't bloat anything for zsmalloc meta size. Right?
Please specify it into the description.

> 
> This work is also available at:
> 	https://gitlab.com/hyeyoo/linux/-/tree/separate_zsdesc_rfc-v3
> 
> [1] State Of The Page, August 2022
> https://lore.kernel.org/lkml/YvV1KTyzZ+Jrtj9x@xxxxxxxxxxxxxxxxxxxx
> 
> Hyeonggon Yoo (21):
>   mm/zsmalloc: create new struct zsdesc
>   mm/zsmalloc: add utility functions for zsdesc
>   mm/zsmalloc: replace first_page to first_zsdesc in struct zspage
>   mm/zsmalloc: add alternatives of frequently used helper functions
>   mm/zsmalloc: convert {try,}lock_zspage() to use zsdesc
>   mm/zsmalloc: convert __zs_{map,unmap}_object() to use zsdesc
>   mm/zsmalloc: convert obj_to_location() and its users to use zsdesc
>   mm/zsmalloc: convert obj_malloc() to use zsdesc
>   mm/zsmalloc: convert create_page_chain() and its users to use zsdesc
>   mm/zsmalloc: convert obj_allocated() and related helpers to use zsdesc
>   mm/zsmalloc: convert init_zspage() to use zsdesc
>   mm/zsmalloc: convert obj_to_page() and zs_free() to use zsdesc
>   mm/zsmalloc: convert reset_page() to reset_zsdesc()
>   mm/zsmalloc: convert zs_page_{isolate,migrate,putback} to use zsdesc
>   mm/zsmalloc: convert __free_zspage() to use zsdesc
>   mm/zsmalloc: convert location_to_obj() to use zsdesc
>   mm/zsmalloc: convert migrate_zspage() to use zsdesc
>   mm/zsmalloc: convert get_zspage() to take zsdesc
>   mm/zsmalloc: convert SetZsPageMovable() to use zsdesc
>   mm/zsmalloc: remove now unused helper functions
>   mm/zsmalloc: convert {get,set}_first_obj_offset() to use zsdesc
> 
>  mm/zsmalloc.c | 578 +++++++++++++++++++++++++++++++-------------------
>  1 file changed, 364 insertions(+), 214 deletions(-)
> 
> -- 
> 2.39.3
> 

It's straightforward, and I don't see any problems. I sincerely appreciate
your dedication to making this change.

Thank you, Hyeonggon!




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux