All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Senozhatsky <senozhatsky@chromium.org>
To: Yosry Ahmed <yosryahmed@google.com>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>,
	Minchan Kim <minchan@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH 2/2] zsmalloc: fine-grained inuse ratio based fullness grouping
Date: Tue, 7 Feb 2023 10:47:28 +0900	[thread overview]
Message-ID: <Y+GtsM6vJge90LHe@google.com> (raw)
In-Reply-To: <CAJD7tka_DFfFu2Ji-HAdw066J2MkmxzrYVQp6pHUAAQhz6Y7EA@mail.gmail.com>

On (23/02/06 17:02), Yosry Ahmed wrote:
[..]
> > A 1/10 difference in ratio between fullness groups is intentional
> > and critical for classes that have a high number of objs_per_zspage.
> > For instance, class-624 stores 59 objects per zspage. With a 1/10
> > ratio grouping, the difference in inuse values between the page
> > with the lowest and highest inuse in a single fullness group is
> > only 4 objects (2469 bytes), whereas a 1/5 ratio grouping would
> > result in a difference of 10 objects (6240 bytes).
> 
> 
> The memory extra overhead would be sizeof(list_head) * nr of classes *
> extra fullness groups = 16 * 255 * 6 = 24480 bytes ~= 24KB on a
> machine with 4096 page size. Sounds reasonable (although I wonder how
> it scales with PAGE_SIZE).

It should be slightly lower than that. We never have 255 classes,
because clases get merged. On a system with chain size of 10 we
have 141 classes, with chain size of 8 it's 119 and chain size of
16 gives us 192 size classes.

> >  enum fullness_group {
> > -       ZS_EMPTY,
> > -       ZS_ALMOST_EMPTY,
> > -       ZS_ALMOST_FULL,
> > -       ZS_FULL,
> > +       ZS_USAGE_0,
> > +       ZS_USAGE_10,
> > +       ZS_USAGE_20,
> > +       ZS_USAGE_30,
> > +       ZS_USAGE_40,
> > +       ZS_USAGE_50,
> > +       ZS_USAGE_60,
> > +       ZS_USAGE_70,
> > +       ZS_USAGE_80,
> > +       ZS_USAGE_90,
> > +       ZS_USAGE_99,
> > +       ZS_USAGE_100,
> >         NR_ZS_FULLNESS,
> >  };
> >
> 
> Is there a reason why this can't be done with something like #define
> FULLNESS_GROUPS 10? We can make sure during build that (100 %
> FULLNESS_GROUPS == 0) to make our lives easier. I feel like the code
> will be much more concise and easier to navigate, instead of multiple
> enums and static arrays.

I wanted to keep things the way they are to make reviews simpler.
We probably can do something more "disruptive" in a separate patch.


  reply	other threads:[~2023-02-07  1:47 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-06  9:25 [PATCH 0/2] zsmalloc: fine-grained fullness grouping Sergey Senozhatsky
2023-02-06  9:25 ` [PATCH 1/2] zsmalloc: remove insert_zspage() ->inuse optimization Sergey Senozhatsky
2023-02-06  9:25 ` [PATCH 2/2] zsmalloc: fine-grained inuse ratio based fullness grouping Sergey Senozhatsky
2023-02-07  1:02   ` Yosry Ahmed
2023-02-07  1:47     ` Sergey Senozhatsky [this message]
2023-02-10  4:24       ` Sergey Senozhatsky
2023-02-10  4:25         ` Yosry Ahmed
2023-02-10  4:29           ` Sergey Senozhatsky
2023-02-10  5:15             ` Yosry Ahmed
2023-02-10  5:47               ` Sergey Senozhatsky
2023-02-10  5:52               ` Sergey Senozhatsky
2023-02-10  6:04                 ` Yosry Ahmed
2023-02-10  6:07                   ` Yosry Ahmed

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=Y+GtsM6vJge90LHe@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=yosryahmed@google.com \
    /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.