← Back to team overview

kernel-packages team mailing list archive

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

 

Public bug reported:

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.

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.

** Affects: linux (Ubuntu)
     Importance: Medium
     Assignee: Chris J Arges (arges)
         Status: In Progress


** Tags: bot-stop-nagging

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

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 cpu capping on VMs started 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


Follow ups

References