On Wed, Oct 8, 2014 at 12:37 PM, Preeti U Murthy <preeti@xxxxxxxxxxxxxxxxxx> wrote: > There are two masks associated with cpusets. The cpus/mems_allowed > and effective_cpus/mems. On the legacy hierarchy both these masks > are consistent with each other. This is the intersection of their > value and the currently active cpus. This means that we destroy the > original values set in these masks on each cpu/mem hot unplug operation. > As a consequence when we hot plug back the cpus/mems, the tasks > no longer run on them and performance degrades, inspite of having > resources to run on. > > This effect is not seen in the default hierarchy since the > allowed and effective masks are distinctly maintained. > allowed masks are never touched once configured and effective masks > alone are hotplug variant. > > This patch replicates the above design even for the legacy hierarchy, > so that: > > 1. Tasks always run on the cpus/memory nodes that they are allowed to run on > as long as they are online. The allowed masks are hotplug invariant. > > 2. When all cpus/memory nodes in a cpuset are hot unplugged out, the tasks > are moved to their nearest ancestor which has resources to run on. Hi Preeti, I may be missing some thing here could you please explain when do we get tasks move out of a cpuset after this patch and why it is even necessary? IIUC, with default hierarchy we should never hit a case where we have empty effective cpuset and hence remove_tasks_in_empty_cpuset should never happen. no? if my assumption is correct then we should remove remove_tasks_in_empty_cpuset itself... -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html