Messages in this thread | | | Subject | [PATCH RFC 0/3] sched/fair: cpu time reserves for cgroups | From | Konstantin Khlebnikov <> | Date | Mon, 16 May 2016 12:36:19 +0300 |
| |
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(-)
| |