mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Konstantin Khorenko <khorenko@virtuozzo.com>
Cc: Dave Chinner <david@fromorbit.com>, Qi Zheng <qi.zheng@linux.dev>,
	Roman Gushchin <roman.gushchin@linux.dev>,
	Muchun Song <muchun.song@linux.dev>,
	Johannes Weiner <hannes@cmpxchg.org>,
	Michal Hocko <mhocko@kernel.org>,
	Shakeel Butt <shakeel.butt@linux.dev>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	cgroups@vger.kernel.org
Subject: Re: [PATCH v2 0/2] mm/shrinker: make per-memcg shrinker units cheaper
Date: Fri, 16 Oct 2026 19:38:42 -0700	[thread overview]
Message-ID: <20261016193842.5af1f5a6cffafd7a24aeb521@linux-foundation.org> (raw)
In-Reply-To: <79c1246f-8c9e-4e2a-adbf-e730732b33b1@virtuozzo.com>

On Fri, 16 Oct 2026 14:27:32 +0200 Konstantin Khorenko <khorenko@virtuozzo.com> wrote:

> On 10/16/26 02:58, Andrew Morton wrote:
> > On Thu, 15 Oct 2026 13:42:41 +0200 Konstantin Khorenko <khorenko@virtuozzo.com> wrote:
> ...
> >> If you prefer the cache, I'm happy to redo patch 1 that way.
> >> Patch 2 does not care about the unit size.
> > 
> > OK, thanks.  Yes, using a kmem_cache is a simple no-brainer.  Let's get
> > that done first and then let's look at additional optimizations on top
> > as a separate activity.
> 
> OK, no problem. I'll redo patch 1 with a dedicated kmem_cache and send
> it separately.

Great.

> 
> > But a tweak which reduces 145GB of bloat to half of that is lipsticking
> > the pig, and what a pig it is.
> > 
> > Why the heck is memcg allocating so many of these things?  What sort of
> > rip-out/rethink/start-over can we do to reduce this by 99.x%?
> 
> That is what patch 2 does:
>   [PATCH v2 2/2] mm/shrinker: allocate the per-memcg shrinker units on demand
> 
> Today every memcg allocates, on every node, a unit for every 63 shrinker
> ids up to shrinker_nr_max, whether or not it ever has an object on those
> shrinkers. Patch 2 allocates a unit only when the memcg gets a list on that
> shrinker's list_lru, so a memcg pays for the shrinkers it uses, not for
> every superblock on the host.
> 
> In the synthetic test from the cover letter (8000 tmpfs mounts,
> shrinker_nr_max 8064, 2000 empty memcgs, 4 nodes):
> 
>                      units               slab per memcg
>   base               1011518 x 1024 B    548 KB
>   + patch 1          1023787 x  512 B    289 KB
>   + patches 1-2          136 x  512 B     42 KB

OK.

> Size: it would replace patch 2 with two patches. The first turns the
> array into an xarray, with the units still allocated up front, and
> removes struct shrinker_info and the expand path. The second allocates
> the units on demand, without the lock and the expand handling patch 2
> needs now. Together I expect about the size of patch 2 today, around
> 170 changed lines, mostly in mm/shrinker.c, with fewer lines in total
> than now.

That sounds like a good plan.

> Which way would you prefer: patch 2 as it is, or the xarray version in
> its place? Or something else?

The xarray approach sounds more complex?  If so I'd say only do that if
it's justified for some reason.


      reply	other threads:[~2026-10-17  2:38 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-14 14:54 Konstantin Khorenko
2026-10-14 14:54 ` [PATCH v2 1/2] mm/shrinker: size shrinker_info_unit to a power of two Konstantin Khorenko
2026-10-14 14:54 ` [PATCH v2 2/2] mm/shrinker: allocate the per-memcg shrinker units on demand Konstantin Khorenko
2026-10-14 20:50 ` [PATCH v2 0/2] mm/shrinker: make per-memcg shrinker units cheaper Andrew Morton
2026-10-15 11:42   ` Konstantin Khorenko
2026-10-15 13:29     ` Muchun Song
2026-10-16  0:58     ` Andrew Morton
2026-10-16 12:27       ` Konstantin Khorenko
2026-10-17  2:38         ` Andrew Morton [this message]

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=20261016193842.5af1f5a6cffafd7a24aeb521@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=cgroups@vger.kernel.org \
    --cc=david@fromorbit.com \
    --cc=hannes@cmpxchg.org \
    --cc=khorenko@virtuozzo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=muchun.song@linux.dev \
    --cc=qi.zheng@linux.dev \
    --cc=roman.gushchin@linux.dev \
    --cc=shakeel.butt@linux.dev \
    /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

all inboxes | Powered by JetHome®