On 2016/1/1 20:09, Chen Yu wrote:
Commit be4c9dd7aee5 ("cpuset: enable onlined cpu/node in effective masks") leverages cpuset's cpus_allowed and its parent's effective_cpus to calculate the new_cpus by: cpumask_and(&new_cpus, cs->cpus_allowed, parent_cs(cs)->effective_cpus); However cpus_allowed will also be updated after the CPU is offline, in hotplug_update_tasks_legacy, so when the CPU is online again, it will use the old cpus_allowed mask to calculate the new_cpus, thus new_cpus will get incorrect value after each round of offline/online. This problem is found on ubuntu 15.10 with cpuset mounted: 1. echo 0 > /sys/devices/system/cpu/cpu2/online 2. echo 1 > /sys/devices/system/cpu/cpu2/online 3. cat /sys/fs/cgroup/cpuset/cpuset.cpus 0-3 4. cat /sys/fs/cgroup/cpuset/user.slice/cpuset.cpus 0-1,3 5. taskset -c 2 ls taskset: failed to set pid 0's affinity: Invalid argument
This is the expected behavior...In legacy hierachy onlining an offlined cpu won't restore cpuset configurations automatically. Commit be4c9dd7aee5 changed this behavior, but only for unified hierachy. -- 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