On Thu, 21 Jan 2021, Bharata B Rao wrote: > > The problem is that calculate_order() is called a number of times > > before secondaries CPUs are booted and it returns 1 instead of 224. > > This makes the use of num_online_cpus() irrelevant for those cases > > > > After adding in my command line "slub_min_objects=36" which equals to > > 4 * (fls(num_online_cpus()) + 1) with a correct num_online_cpus == 224 > > , the regression diseapears: > > > > 9 iterations of hackbench -l 16000 -g 16: 3.201sec (+/- 0.90%) > > Should we have switched to num_present_cpus() rather than > num_online_cpus()? If so, the below patch should address the > above problem. There is certainly an initcall after secondaries are booted where we could redo the calculate_order? Or the num_online_cpus needs to be up to date earlier. Why does this issue not occur on x86? Does x86 have an up to date num_online_cpus earlier?