I'd be just as happy with the following, although it would require changingHmm but why not move ->min_partial to struct kmem_cache_node as I suggested
MIN_PARTIAL to be greater than its default of 5 if a node supports more cpus
for optimal performance (the old patch did that automatically up to
MAX_PARTIAL).
and make sure it's adjusted properly as with nr_cpus_node()?
Sure, that's also possible except we'd lose the ability to tune min_partial with /sys/kernel/slab/cache/min_partial, unless it would then change n->min_partial for each N_NORMAL_MEMORY node. We lack an interface to change the per-node min_partial.
If you think that's acceptable, I'd be just as satisfied with that approach as long as all archs have valid cpu_to_node() mappings at the time of CPU_UP_PREPARE.
Aside: we're lacking in the documentation of these sysfs tunables such as remote_node_defrag_ratio to begin with, the only way to figure out what it does is by reading the code or making assumptions based on its name. I'd be happy to add some documentation but it'd be good to keep it separate from Documentation/vm/slub.txt.