← Back to team overview

kernel-packages team mailing list archive

[Bug 1259645] Re: cgroup cpu capping via cpu.cfs_quota can cause tasks to not be scheduled on the runque

 

** Description changed:

  SRU Justification:
  
  Impact:
  When using cgroup's cpu capping features via the cpu.cfs_quota setting a race condition can occur such that a task has its timer disabled and no longer gets scheduled on the runqueue.
- This has been observed when setting cpu capping on VMs started with libvirt.
+ This has been observed when setting cgroup cpu capping on VMs started and restarted with libvirt.
  
  Fix:
  Commit f9f9ffc237dd924f048204e8799da74f9ecf40cf upstream fixes this issue. It fixes throttle_cfs_rq by checking if the timer is not active. If it isn't then it calls __start_cfs_bandwidth which will put the task back on the runqueue.
  
  Testcase:
  From the patch: make a run/sleep task in a cgroup, loop switching the cgroup
  between 1ms/100ms quota and unlimited, checking for timer_active=0 and
  throttled=1 as a failure. With the throttle_cfs_rq() change commented out
  this fails, with the full patch it passes.

-- 
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/1259645

Title:
  cgroup cpu capping via cpu.cfs_quota can cause tasks to not be
  scheduled on the runque

Status in “linux” package in Ubuntu:
  In Progress
Status in “linux” source package in Precise:
  In Progress
Status in “linux” source package in Quantal:
  In Progress
Status in “linux” source package in Raring:
  In Progress
Status in “linux” source package in Saucy:
  In Progress
Status in “linux” source package in Trusty:
  In Progress

Bug description:
  SRU Justification:

  Impact:
  When using cgroup's cpu capping features via the cpu.cfs_quota setting a race condition can occur such that a task has its timer disabled and no longer gets scheduled on the runqueue.
  This has been observed when setting cgroup cpu capping on VMs started and restarted with libvirt.

  Fix:
  Commit f9f9ffc237dd924f048204e8799da74f9ecf40cf upstream fixes this issue. It fixes throttle_cfs_rq by checking if the timer is not active. If it isn't then it calls __start_cfs_bandwidth which will put the task back on the runqueue.

  Testcase:
  From the patch: make a run/sleep task in a cgroup, loop switching the cgroup
  between 1ms/100ms quota and unlimited, checking for timer_active=0 and
  throttled=1 as a failure. With the throttle_cfs_rq() change commented out
  this fails, with the full patch it passes.

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


References