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.