From: Minchan Kim <minchan@kernel.org>
To: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Nitin Gupta <ngupta@vflare.org>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCHv4 4/9] zsmalloc: make huge class watermark zs_pool member
Date: Thu, 10 Nov 2022 14:25:34 -0800 [thread overview]
Message-ID: <Y216Xq8V8InFQyms@google.com> (raw)
In-Reply-To: <20221031054108.541190-5-senozhatsky@chromium.org>
On Mon, Oct 31, 2022 at 02:41:03PM +0900, Sergey Senozhatsky wrote:
> We will permit per-pool configuration of pages per-zspage value,
> which changes characteristics of the classes and moves around
> huge class size watermark. Thus huge class size needs to be
> a per-pool variable.
I think part of code in previous patch should move here since
you are creating the feature in this patch:
BTW, I am wondering we really need to jump the per-pool config
option over global general golden ratio and/or smarter approach
to optimize transparently depending on how much memory we have
wasted.
>
> Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
> ---
> mm/zsmalloc.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
> index 5f79223e7bfe..d329bd673baa 100644
> --- a/mm/zsmalloc.c
> +++ b/mm/zsmalloc.c
> @@ -178,7 +178,6 @@ static struct dentry *zs_stat_root;
> * (see: fix_fullness_group())
> */
> static const int fullness_threshold_frac = 4;
> -static size_t huge_class_size;
>
> struct size_class {
> spinlock_t lock;
> @@ -227,6 +226,7 @@ struct zs_pool {
>
> u32 num_size_classes;
> u32 min_alloc_size;
> + size_t huge_class_size;
>
> struct zs_pool_stats stats;
>
> @@ -1350,7 +1350,7 @@ EXPORT_SYMBOL_GPL(zs_unmap_object);
> */
> size_t zs_huge_class_size(struct zs_pool *pool)
> {
> - return huge_class_size;
> + return pool->huge_class_size;
> }
> EXPORT_SYMBOL_GPL(zs_huge_class_size);
>
> @@ -2262,8 +2262,8 @@ struct zs_pool *zs_create_pool(const char *name)
> * endup in the huge class.
> */
> if (pages_per_zspage != 1 && objs_per_zspage != 1 &&
> - !huge_class_size) {
> - huge_class_size = size;
> + !pool->huge_class_size) {
> + pool->huge_class_size = size;
> /*
> * The object uses ZS_HANDLE_SIZE bytes to store the
> * handle. We need to subtract it, because zs_malloc()
> @@ -2273,7 +2273,7 @@ struct zs_pool *zs_create_pool(const char *name)
> * class because it grows by ZS_HANDLE_SIZE extra bytes
> * right before class lookup.
> */
> - huge_class_size -= (ZS_HANDLE_SIZE - 1);
> + pool->huge_class_size -= (ZS_HANDLE_SIZE - 1);
> }
>
> /*
> --
> 2.38.1.273.g43a17bfeac-goog
>
next prev parent reply other threads:[~2022-11-10 22:25 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-31 5:40 [PATCHv4 0/9] zsmalloc/zram: configurable zspage size Sergey Senozhatsky
2022-10-31 5:41 ` [PATCHv4 1/9] zram: add size class equals check into recompression Sergey Senozhatsky
2022-10-31 5:41 ` [PATCHv4 2/9] zsmalloc: turn zspage order into runtime variable Sergey Senozhatsky
2022-11-10 21:59 ` Minchan Kim
2022-11-11 10:38 ` Sergey Senozhatsky
2022-11-11 17:09 ` Minchan Kim
2022-11-14 3:55 ` Sergey Senozhatsky
2022-10-31 5:41 ` [PATCHv4 3/9] zsmalloc: move away from page order defines Sergey Senozhatsky
2022-11-10 22:02 ` Minchan Kim
2022-10-31 5:41 ` [PATCHv4 4/9] zsmalloc: make huge class watermark zs_pool member Sergey Senozhatsky
2022-11-10 22:25 ` Minchan Kim [this message]
2022-11-11 1:07 ` Sergey Senozhatsky
2022-10-31 5:41 ` [PATCHv4 5/9] zram: huge size watermark cannot be global Sergey Senozhatsky
2022-10-31 5:41 ` [PATCHv4 6/9] zsmalloc: pass limit on pages per-zspage to zs_create_pool() Sergey Senozhatsky
2022-11-09 6:24 ` Sergey Senozhatsky
2022-11-11 17:14 ` Minchan Kim
2022-11-11 2:10 ` Minchan Kim
2022-11-11 10:32 ` Sergey Senozhatsky
2022-10-31 5:41 ` [PATCHv4 7/9] zram: add pages_per_pool_page device attribute Sergey Senozhatsky
2022-11-09 4:34 ` Sergey Senozhatsky
2022-10-31 5:41 ` [PATCHv4 8/9] Documentation: document zram pages_per_pool_page attribute Sergey Senozhatsky
2022-11-11 2:20 ` Minchan Kim
2022-11-11 10:34 ` Sergey Senozhatsky
2022-10-31 5:41 ` [PATCHv4 9/9] zsmalloc: break out of loop when found perfect zspage order Sergey Senozhatsky
2022-11-10 22:44 ` [PATCHv4 0/9] zsmalloc/zram: configurable zspage size Minchan Kim
2022-11-11 0:56 ` Sergey Senozhatsky
2022-11-11 17:03 ` Minchan Kim
2022-11-14 3:53 ` Sergey Senozhatsky
2022-11-14 7:55 ` Sergey Senozhatsky
2022-11-14 8:37 ` Sergey Senozhatsky
2022-11-15 6:01 ` Sergey Senozhatsky
2022-11-15 7:59 ` Sergey Senozhatsky
2022-11-15 23:23 ` Minchan Kim
2022-11-16 0:52 ` Sergey Senozhatsky
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=Y216Xq8V8InFQyms@google.com \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ngupta@vflare.org \
--cc=senozhatsky@chromium.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 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.