On Fri, 15 Apr 2011 10:20:51 +0200 Michal Hocko <mhocko@xxxxxxx> wrote: > Some workloads that create a large number of small files tend to assign > too many pages to node 0 (multi-node systems). Part of the reason is that > the rotor (in cpuset_mem_spread_node()) used to assign nodes starts at > node 0 for newly created tasks. > > This patch changes the rotor to be initialized to a random node number of > the cpuset. We are initializating it lazily in cpuset_mem_spread_node > resp. cpuset_slab_spread_node. > > > ... > > --- a/kernel/cpuset.c > +++ b/kernel/cpuset.c > @@ -2465,11 +2465,19 @@ static int cpuset_spread_node(int *rotor) > > int cpuset_mem_spread_node(void) > { > + if (current->cpuset_mem_spread_rotor == -1) > + current->cpuset_mem_spread_rotor = > + node_random(¤t->mems_allowed); > + > return cpuset_spread_node(¤t->cpuset_mem_spread_rotor); > } > > int cpuset_slab_spread_node(void) > { > + if (current->cpuset_slab_spread_rotor == -1) > + current->cpuset_slab_spread_rotor > + = node_random(¤t->mems_allowed); > + > return cpuset_spread_node(¤t->cpuset_slab_spread_rotor); > } > alpha allmodconfig: kernel/built-in.o: In function `cpuset_slab_spread_node': (.text+0x67360): undefined reference to `node_random' kernel/built-in.o: In function `cpuset_slab_spread_node': (.text+0x67368): undefined reference to `node_random' kernel/built-in.o: In function `cpuset_mem_spread_node': (.text+0x673b8): undefined reference to `node_random' kernel/built-in.o: In function `cpuset_mem_spread_node': (.text+0x673c0): undefined reference to `node_random' because it has CONFIG_NUMA=n, CONFIG_NODES_SHIFT=7. We use "#if MAX_NUMNODES > 1" in nodemask.h, but we use CONFIG_NUMA when deciding to build mempolicy.o. That's a bit odd - why didn't nodemask.h use CONFIG_NUMA? -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>