Messages in this thread | | | Date | Thu, 12 Feb 2015 21:49:51 +0000 | From | Serge Hallyn <> | Subject | cpusets in non-unified hierarchy broken? |
| |
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
| |