← Back to team overview

kernel-packages team mailing list archive

[Bug 1435571] Comment bridged from LTC Bugzilla

 

------- Comment From raghavendra.kt@xxxxxxxxxx 2016-03-02 01:41 EDT-------
The upstream fix should have fixed this issue:

docker container  is bound to some cpuset and that is not honoured by
the system. This can be verified by checking the corresponding cpuset
cgroup of docker container in the host.

The upstream fix will not fix this issue:

/proc/cpuinfo showing what is the container affinity. /proc/cpuinfo
shows all the cpus available in the system but it does not have anything
to do with affinity of container.

Hope this is clear

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1435571

Title:
  docker: docker run --cpuset is not having any effect

Status in linux package in Ubuntu:
  Fix Released

Bug description:
  ---Problem Description---
  docker: cpuset resouce allocaton on a container shows/lists all CPU of VM host
   
  ---uname output---
  root@8a2d293ba30d:/sys# uname -a Linux 8a2d293ba30d 3.19.0-7-generic #7-Ubuntu SMP Fri Feb 27 00:26:30 UTC 2015 ppc64le ppc64le ppc64le GNU/Linux
   
  Machine Type = Power 8 / PowerKVM 
   
  ---Steps to Reproduce---
  1 - Install docker 1.4 developer build on PowerKVM Ubuntu 15.04 LE geust
  ftp://ftp.unicamp.br/pub/linuxpatch/docker-ppc64/ubuntu/14_10/docker.io-1.4.1-dev_ppc64el.deb

  2 - Create vivid image using debootstrap

  3 - Run a container using below command with cpuset=6,7

  root@dockerbase:~# docker run -it --cpuset=6,7 vivid-cpuset-stress
  /bin/bash

  4 - Inside container check for : grep processor /proc/cpuinfo
  root@06b22766d612:/# grep processor /proc/cpuinfo
  processor	: 0
  processor	: 1
  processor	: 2
  processor	: 3
  processor	: 4
  processor	: 5
  processor	: 6
  processor	: 7
  processor	: 8
  processor	: 9
  processor	: 10
  processor	: 11
  processor	: 12
  processor	: 13
  processor	: 14
  processor	: 15
  root@06b22766d612:/# 

  It does list all CPUs of guest VM aka host in this case instead
  expected 6,7 cpu to be bound to this container.

  At host end "cpuset" :
  root@dockerbase:~# cat /sys/fs/cgroup/cpuset/docker/06b22766d61244fc5964d2a11bb0972d05ad72bb5899b6f55663c603bf5d6cba/cpuset.cpus 
  6-7

  Nish, AFAIK, effective cpus was relevant only for unified hierarchy...
  they used to set effective_cpus= cpuset.cpus .. but will investigate
  more on this..

  Uh, I think this got fixed upstream, can we check? Maybe build an
  Ubuntu test kernel (this should get auto-pulled in in some future
  build, due to -stable):

  79063bffc81f82689bd90e16da1b49408f3bf095 ("cpuset: fix a warning when
  clearing configured masks in old hierarchy").

  -Nish

  I did some more investigation and as Nish pointed there were some bugs
  that got fixed in upstream.

  Root cause: cgroup.clone_children was not handled properly. the bug appears when we have
  cgroup.clone_children=1

  if we set 0 to clone_children it should work properly.
  so better if we backport below patch (if not already to fix the current problem)


  1. 790317e1b266c776765a4bdcedefea706ff0fada: cpuset: initialize effective masks when clone_children is enabled
  2. 79063bffc81f82689bd90e16da1b49408f3bf095 ("cpuset: fix a warning when clearing configured masks in old hierarchy"). (Nish pointed this patch)

  Canonical,

  both the above patches are targetted for 3.19-stable (in fact 3.17+),
  but given the possible miss on schedule between the upstream
  3.19-stable releases and 15.04 kernel freeze, can we please manually
  include them until they are present in -stable? Without the changes,
  the cpuset cgroups are rather broken.

  -Nish

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1435571/+subscriptions