From: Sergey Senozhatsky <senozhatsky@chromium.org>
To: Minchan Kim <minchan@kernel.org>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
Andrew Morton <akpm@linux-foundation.org>,
Nitin Gupta <ngupta@vflare.org>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCHv4 2/9] zsmalloc: turn zspage order into runtime variable
Date: Fri, 11 Nov 2022 19:38:10 +0900 [thread overview]
Message-ID: <Y24mEiy0pt2qSCqr@google.com> (raw)
In-Reply-To: <Y210OrSgrqWPr0DT@google.com>
On (22/11/10 13:59), Minchan Kim wrote:
[..]
> > +#define ZS_PAGE_ORDER_2 2
> > +#define ZS_PAGE_ORDER_4 4
> > +
> > +/*
> > + * A single 'zspage' is composed of up to 2^N discontiguous 0-order (single)
> > + * pages. ZS_MAX_PAGE_ORDER defines upper limit on N, ZS_MIN_PAGE_ORDER
> > + * defines lower limit on N. ZS_DEFAULT_PAGE_ORDER is recommended value.
>
> It gives the impression:
>
> 2^2 <= the page nubmer of zspage <= 2^4
>
> I think that's not what you want to describe. How about?
>
> A single 'zspage' is composed of up to 2^N discontiguous 0-order (single)
> pages and the N can be from ZS_MIN_PAGE_ORDER to ZS_MAX_PAGE_ORDER.
OK.
> > + */
> > +#define ZS_MIN_PAGE_ORDER ZS_PAGE_ORDER_2
> > +#define ZS_MAX_PAGE_ORDER ZS_PAGE_ORDER_4
> > +#define ZS_DEFAULT_PAGE_ORDER ZS_PAGE_ORDER_2
>
> #define ZS_MIN_PAGE_ORDER 2
>
> We can use the number directly instead of another wrapping at least
> in this patch(Just in case: if you want to extent it later patch,
> please do it in the patch)
OK.
[..]
> > -#define MAX(a, b) ((a) >= (b) ? (a) : (b))
> > -/* ZS_MIN_ALLOC_SIZE must be multiple of ZS_ALIGN */
> > -#define ZS_MIN_ALLOC_SIZE \
> > - MAX(32, (ZS_MAX_PAGES_PER_ZSPAGE << PAGE_SHIFT >> OBJ_INDEX_BITS))
> > +#define ZS_MIN_ALLOC_SIZE 32U
>
> Let's have some comment here to say that's not the final vaule which
> is supposed to be pool->min_alloc_size.
OK.
[..]
> > enum fullness_group {
> > ZS_EMPTY,
> > @@ -230,12 +221,15 @@ struct link_free {
> > struct zs_pool {
> > const char *name;
> >
> > - struct size_class *size_class[ZS_SIZE_CLASSES];
> > + struct size_class **size_class;
> > struct kmem_cache *handle_cachep;
> > struct kmem_cache *zspage_cachep;
> >
> > atomic_long_t pages_allocated;
> >
> > + u32 num_size_classes;
> > + u32 min_alloc_size;
>
> Please use int.
OK. Any reason why we don't want u32? I thought that
s16/u16/s32/u32/etc. is the new normal.
> From this patch, I couldn't figure why we need
> variable in the pool. Let's have the change in the patch where
> you really need to have the usecase.
Let me take a look.
> > -static int get_pages_per_zspage(int class_size)
> > +static int get_pages_per_zspage(u32 class_size, u32 num_pages)
>
> Let's just use int instead of u32
>
> Why do you need num_pages argument instead of using 1UL << ZS_DEFAULT_PAGE_ORDER?
> It looks like static value.
It is static right now, but in the a couple of patches it'll change to
dynamic.
next prev parent reply other threads:[~2022-11-11 10:38 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 [this message]
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
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=Y24mEiy0pt2qSCqr@google.com \
--to=senozhatsky@chromium.org \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=minchan@kernel.org \
--cc=ngupta@vflare.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.