On Wed, 29 Dec 2010, Li Zefan wrote: > > I think it would be appropriate to use a shared nodemask with file scope > > whenever you have cgroup_lock() to avoid the unnecessary kmalloc() even > > with GFP_KERNEL. Cpusets are traditionally used on very large machines in > > the first place, so there is a higher likelihood that > > CONFIG_NODES_SHIFT > 8 whenever CONFIG_CPUSETS is enabled. > > > > All users of NODEMASK_ALLOC() should be protected by cgroup_lock() other > > than cpuset_sprintf_memlist(), right? That should be the only remaining > > user of NODEMASK_ALLOC() and works well since it can return -ENOMEM. > > > > Changing cpuset->mems_allowed is protected by both cgroup_mutex and > cpuset-specific lock (callback_mutex), so you can read it under either > lock, so NODEMASK_ALLOC() is not needed. See cpuset_sprintf_cpulist(). > I'm not sure what you're saying. Cpusets needs to allocate nodemasks for certain functions and doing on the stack can be problemantic if CONFIG_NODES_SHIFT is large because of overflow. Thus, we can't have temporary nodemasks available on the stack where necessary in functions like cpuset_attach(), update_nodemask(), etc. that require them. The suggestion was to use a statically allocated "scratch" nodemask since these functions are all protected by cgroup_lock(). _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers