[PATCH RFC 0/3] sched/fair: cpu time reserves for cgroups
From: Konstantin Khlebnikov
Date: Mon May 16 2016 - 05:36:36 EST
This feature allows to change cpu cgroup weight for a limited time.
Cgroup interface:
cpu.cfs_reserve_us - reserved time for each cpu.cfs_period_us
cpu.cfs_reserve_shares - group weight during reserved time
While cfs group consumes reserved cpu time it has different weight,
thus it gets different vruntime penalty for that execution.
^ weight
|
|
reserve |
shares -------*
| |
| |
| |
shares - *-----------------*
| |
| |
0------|-----------------|-----------> time
reserve quota
Reserve can work as a "low limit": boost weight for "guaranteed" time,
and as a "high limit": give normal weight for a limited time and allow
utilize cpu when nobody else needs it.
Sample setup:
level | shares reserve shares
--------+----------------------------
high | 1024*16 1024*16*16
normal | 1024 1024*16
low | 1024/16 1024
In this way cgroups are devided into three levels.
During reserved time they are promoted to the next level.
---
Konstantin Khlebnikov (3):
sched/fair: call __refill_cfs_bandwidth_runtime only for finite quota
sched/fair: copy taskgroup shares to each cfs_rq
sched/fair: pulse-weight modulation controller for cpu cgroup
kernel/sched/core.c | 96 +++++++++++++++++++++++++++++++++++++++++++-----
kernel/sched/fair.c | 101 ++++++++++++++++++++++++++++++++++++++------------
kernel/sched/sched.h | 5 ++
3 files changed, 168 insertions(+), 34 deletions(-)