On Wed, 16 Nov 2011, Theodore Tso wrote:
On Nov 16, 2011, at 10:04 AM, Namjae Jeon wrote:
quoted
If slab caches set to SLAB_MEM_SPREAD flags, The allocation is spread
evenly over all the memory nodes instead of favoring allocation on the
node local to current cpu.
And why do you think this is a good thing? For mballoc in particular,
the data structures are used immediately and then freed immediately ---
on the local node, so using a non-local memory just makes things worse
in a NUMA system.
I don't think this has the effect that Namjae thinks it does: this is only
useful for CONFIG_SLAB and when you have cpusets enabled with
cpuset.memory_spread_slab set.
To test how useful it is, you should enable CONFIG_SLAB and then mount
cpusets, set cpuset.memory_spread_slab, and create an MPOL_INTERLEAVE
mempolicy over all online nodes. This will have the same effect as adding
SLAB_MEM_SPREAD to these slab caches (it just doesn't require the
mempolicy) and will be able to quantify the effects without any changes to
the kernel at all.