Introduction
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v4 Latest7 patches 63 repliesIn review
- v26 patches 0 repliesSuperseded
- v1 RFC4 patches 5 repliesSuperseded
Changes in v4 from the cover letter
- Rebased to current tip, update to work with new group scheduling accounting
- (Bug fix) Fixed Race with unthrottling (due to changing global limit) fixed
- (Bug fix) Fixed buddy interactions -- in particular, prevent buddy nominations from re-picking throttled entities
Patches in v4 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/7 | sched: introduce primitives to account for CFS bandwidth trackinginit/ kernel/ kernel/ | +269 | 5 replies | |
| 2/7 | sched: accumulate per-cfs_rq cpu usageinclude/ kernel/ kernel/ | +76 | 4 replies | |
| 3/7 | sched: throttle cfs_rq entities which exceed their local quotakernel/ kernel/ | +114 | 19 replies | |
| 4/7 | sched: unthrottle cfs_rq(s) who ran out of quota at period refreshkernel/ kernel/ kernel/ | +90 | 7 replies | |
| 5/7 | sched: add exports tracking cfs bandwidth control statisticskernel/ kernel/ | +41 | 8 replies | |
| 6/7 | sched: hierarchical task accounting for SCHED_OTHERkernel/ kernel/ kernel/ | +52 | 8 replies | |
| 7/7 | sched: add documentation for bandwidth controlDocumentation/ | +98 | 0 replies |
Reviews trailers per patch
4 of 7 patches have a Reviewed-by or Acked-by.
| Patch | Balbir Singh |
|---|---|
| 1/7 | A-b |
| 2/7 | A-b |
| 3/7 | A-b |
| 4/7 | |
| 5/7 | |
| 6/7 | A-b A-b |
| 7/7 |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [CFS Bandwidth Control v4 0/7] Introduction
Hi all,
Please find attached v4 of CFS bandwidth control; while this rebase against some of the latest SCHED_NORMAL code is new, the features and methodology are fairly mature at this point and have proved both effective and stable for several workloads.
As always, all comments/feedback welcome.
Changes since v3:
- Rebased to current tip, update to work with new group scheduling accounting
- (Bug fix) Fixed Race with unthrottling (due to changing global limit) fixed
- (Bug fix) Fixed buddy interactions -- in particular, prevent buddy nominations from re-picking throttled entities
The skeleton of our approach is as follows:
- We maintain a global pool (per-tg) pool of unassigned quota. Within it we track the bandwidth period, quota per period, and runtime remaining in the current period. As bandwidth is used within a period it is decremented from runtime. Runtime is currently synchronized using a spinlock, in the current implementation there's no reason this couldn't be done using atomic ops instead however the spinlock allows for a little more flexibility in experimentation with other schemes.
- When a cfs_rq participating in a bandwidth constrained task_group executes it acquires time in sysctl_sched_cfs_bandwidth_slice (default currently 10ms) size chunks from the global pool, this synchronizes under rq->lock and is part of the update_curr path.
- Throttled entities are dequeued, we protect against their re-introduction to the scheduling hierarchy via checking for a, per cfs_rq, throttled bit.
Interface:
----------
Three new cgroupfs files are exported by the cpu subsystem:
cpu.cfs_period_us : period over which bandwidth is to be regulated cpu.cfs_quota_us : bandwidth available for consumption per period
cpu.stat : statistics (such as number of throttled periods and
total throttled time)
One important interface change that this introduces (versus the rate limits proposal) is that the defined bandwidth becomes an absolute quantifier.
Previous postings:
-----------------
v3:
https://lkml.org/lkml/2010/10/12/44
v2:
http://lkml.org/lkml/2010/4/28/88
Original posting:
http://lkml.org/lkml/2010/2/12/393
Prior approaches:
http://lkml.org/lkml/2010/1/5/44 ("CFS Hard limits v5")
Thanks,
- Paul