** 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 -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp