cpusets in non-unified hierarchy broken?

From: Serge Hallyn
Date: Thu Feb 12 2015 - 16:50:00 EST


Hi,

as of some point in 3.18, cpuset.cpus doesn't seem to be
enforced any more. I don't see an obvious reason in the
code, but it seems likely to be related to the effective_cpus.

If I mount -t cgroup -o cpuset cpuset /mnt and then mkdir /mnt/lxc,
then /mnt/lxc has:

====================================================
ubuntu@cpuset1:~$ cat /mnt/lxc/cpuset.effective_cpus

ubuntu@cpuset1:~$ cat /mnt/lxc/cpuset.cpus
0-3
====================================================

while

====================================================
ubuntu@cpuset1:~$ cat /mnt/cpuset.effective_cpus
0-3
ubuntu@cpuset1:~$ cat /mnt/cpuset.cpus
0-3
====================================================

My understanding is that effective_cpus in /lxc should be
the /cpuset.effective_cpus & /lxc/cpuset.cpus. But that
doesn't seem to be the case. So then, when I start a
container confined to a single cpu (which will use cgroup
/lxc/c1, for instance) then it looks like:

====================================================
ubuntu@cpuset1:~$ cat /mnt/lxc/v1/cpuset.effective_cpus

ubuntu@cpuset1:~$ cat /mnt/lxc/v1/cpuset.cpus
1
====================================================

While the /proc/self/status inside that container and cgroup
shows:

====================================================
root@v1:~# grep -i cpu /proc/self/status
Cpus_allowed: f
Cpus_allowed_list: 0-3
====================================================

Christian, who originally found this and reported it at
https://github.com/lxc/lxc/issues/427 , also tested that in fact
the tasks are not confined (so it's not just an issue of
improper reporting, it seems)

thanks,
-serge
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/