From: Hao Li <hao.li@linux.dev>
To: "Harry Yoo (Oracle)" <harry@kernel.org>
Cc: Vlastimil Babka <vbabka@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Christoph Lameter <cl@gentwo.org>,
David Rientjes <rientjes@google.com>,
Roman Gushchin <roman.gushchin@linux.dev>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Suren Baghdasaryan <surenb@google.com>,
"Liam R. Howlett" <liam@infradead.org>
Subject: Re: [PATCH RFC 1/8] mm/slab: do not store cache pointer in struct slab_sheaf
Date: Tue, 19 May 2026 12:08:19 +0800 [thread overview]
Message-ID: <agvfq5CgipemBLPl@fedora> (raw)
In-Reply-To: <20260516-sheaves-tuning-v1-1-221aa3e1d829@kernel.org>
On Sat, May 16, 2026 at 01:24:25AM +0900, Harry Yoo (Oracle) wrote:
> The `cache` field of struct slab_sheaf is only read on the slow path
> when freeing an RCU sheaf. Storing it in every sheaf is an overkill.
>
> Drop the field. In rcu_free_sheaf() and rcu_free_sheaf_nobarn(),
> fetch the kmem_cache pointer via
> virt_to_slab(sheaf->objects[0])->slab_cache instead.
>
> As sheaf is only attached to pcs->rcu_free once it holds at least one
> object, the lookup is safe. Add a WARN_ON_ONCE() in case an empty
> sheaf ever reaches the RCU free path. In that case, the cache is
> unknown, so free_empty_sheaf() now tolerates a NULL cache argument.
> However, the case is never expected to trigger.
>
> While at it, remove the stale comment in init_percpu_sheaves().
>
> Signed-off-by: Harry Yoo (Oracle) <harry@kernel.org>
> ---
> mm/slub.c | 26 +++++++++++++-------------
> 1 file changed, 13 insertions(+), 13 deletions(-)
Looks good to me.
This cleanup can save 8 bytes and give us one more objects[] pointer.
Reviewed-by: Hao Li <hao.li@linux.dev>
--
Thanks,
Hao
next prev parent reply other threads:[~2026-05-19 4:08 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-15 16:24 [PATCH RFC 0/8] mm/slab: enable runtime sheaves tuning Harry Yoo (Oracle)
2026-05-15 16:24 ` [PATCH RFC 1/8] mm/slab: do not store cache pointer in struct slab_sheaf Harry Yoo (Oracle)
2026-05-19 4:08 ` Hao Li [this message]
2026-05-15 16:24 ` [PATCH RFC 2/8] mm/slab: change sheaf_capacity type to unsigned short Harry Yoo (Oracle)
2026-05-15 16:24 ` [PATCH RFC 3/8] mm/slab: track capacity per sheaf Harry Yoo (Oracle)
2026-05-15 16:24 ` [PATCH RFC 4/8] mm/slab: allow bootstrap_cache_sheaves() to fail Harry Yoo (Oracle)
2026-05-15 16:24 ` [PATCH RFC 5/8] mm/slab: rework cache_has_sheaves() to check immutable properties only Harry Yoo (Oracle)
2026-05-15 16:24 ` [PATCH RFC 6/8] mm/slab: allow changing sheaf_capacity at runtime Harry Yoo (Oracle)
2026-05-17 8:30 ` Yeoreum Yun
2026-05-18 6:53 ` Harry Yoo (Oracle)
2026-05-15 16:24 ` [PATCH RFC 7/8] mm/slab: add pcs->lock lockdep assert when accessing the barn Harry Yoo (Oracle)
2026-05-15 16:24 ` [PATCH RFC 8/8] mm/slab: allow changing max_{full,empty}_sheaves at runtime Harry Yoo (Oracle)
2026-05-18 11:52 ` [PATCH RFC 0/8] mm/slab: enable runtime sheaves tuning Pedro Falcato
2026-05-20 4:35 ` Harry Yoo
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=agvfq5CgipemBLPl@fedora \
--to=hao.li@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=cl@gentwo.org \
--cc=harry@kernel.org \
--cc=liam@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=surenb@google.com \
--cc=vbabka@kernel.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.