[PATCH v2] cpusets: randomize node rotor used incpuset_mem_spread_node()

From: Michal Hocko
Date: Fri Apr 15 2011 - 04:21:05 EST


[I just realized that I forgot to CC mm mailing list]

On Fri 15-04-11 16:18:45, KOSAKI Motohiro wrote:
> Oops.
> I should have look into !mempolicy part too.
> I'm sorry.
>
[...]
> Michal, I think this should be
>
> #ifdef CONFIG_CPUSETS
> if (cpuset_do_page_mem_spread())
> p->cpuset_mem_spread_rotor = node_random(&p->mems_allowed);
> if (cpuset_do_slab_mem_spread())
> p->cpuset_slab_spread_rotor = node_random(&p->mems_allowed);
> #endif
>
> because 99.999% people don't use cpuset's spread mem/slab feature and
> get_random_int() isn't zero cost.
>
> What do you think?

You are right. I was thinking about lazy approach and initialize those
values when they are used for the first time. What about the patch
below?

Change from v1:
- initialize cpuset_{mem,slab}_spread_rotor lazily

---