Thread (36 messages) 36 messages, 10 authors, 2021-02-10

Re: [RFC PATCH v0] mm/slub: Let number of online CPUs determine the slub page order

From: Bharata B Rao <hidden>
Date: 2021-02-03 11:11:21
Also in: lkml

On Wed, Jan 27, 2021 at 12:04:01PM +0100, Vlastimil Babka wrote:
On 1/27/21 10:10 AM, Christoph Lameter wrote:
quoted
On Tue, 26 Jan 2021, Will Deacon wrote:
quoted
quoted
Hm, but booting the secondaries is just a software (kernel) action? They are
already physically there, so it seems to me as if the cpu_present_mask is not
populated correctly on arm64, and it's just a mirror of cpu_online_mask?
I think the present_mask retains CPUs if they are hotplugged off, whereas
the online mask does not. We can't really do any better on arm64, as there's
no way of telling that a CPU is present until we've seen it.
The order of each page in a kmem cache --and therefore also the number
of objects in a slab page-- can be different because that information is
stored in the page struct.

Therefore it is possible to retune the order while the cache is in operaton.
Yes, but it's tricky to do the retuning safely, e.g. if freelist randomization
is enabled, see [1].

But as a quick fix for the regression, the heuristic idea could work reasonably
on all architectures?
- if num_present_cpus() is > 1, trust that it doesn't have the issue such as
arm64, and use it
- otherwise use nr_cpu_ids

Long-term we can attempt to do the retuning safe, or decide that number of cpus
shouldn't determine the order...

[1] https://lore.kernel.org/linux-mm/d7fb9425-9a62-c7b8-604d-5828d7e6b1da@suse.cz/ (local)
So what is preferrable here now? Above or other quick fix or reverting
the original commit?

Regards,
Bharata.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help