mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
sched: rt-bandwidth accounting fix
It fixes an accounting bug where we would continue accumulating runtime even though the bandwidth control is disabled. This would lead to very long throttle periods once bandwidth control gets turned on again. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
f3ade83780
commit
cc2991cf15
1 changed files with 5 additions and 6 deletions
|
@ -440,9 +440,6 @@ static int sched_rt_runtime_exceeded(struct rt_rq *rt_rq)
|
||||||
{
|
{
|
||||||
u64 runtime = sched_rt_runtime(rt_rq);
|
u64 runtime = sched_rt_runtime(rt_rq);
|
||||||
|
|
||||||
if (runtime == RUNTIME_INF)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (rt_rq->rt_throttled)
|
if (rt_rq->rt_throttled)
|
||||||
return rt_rq_throttled(rt_rq);
|
return rt_rq_throttled(rt_rq);
|
||||||
|
|
||||||
|
@ -493,9 +490,11 @@ static void update_curr_rt(struct rq *rq)
|
||||||
rt_rq = rt_rq_of_se(rt_se);
|
rt_rq = rt_rq_of_se(rt_se);
|
||||||
|
|
||||||
spin_lock(&rt_rq->rt_runtime_lock);
|
spin_lock(&rt_rq->rt_runtime_lock);
|
||||||
rt_rq->rt_time += delta_exec;
|
if (sched_rt_runtime(rt_rq) != RUNTIME_INF) {
|
||||||
if (sched_rt_runtime_exceeded(rt_rq))
|
rt_rq->rt_time += delta_exec;
|
||||||
resched_task(curr);
|
if (sched_rt_runtime_exceeded(rt_rq))
|
||||||
|
resched_task(curr);
|
||||||
|
}
|
||||||
spin_unlock(&rt_rq->rt_runtime_lock);
|
spin_unlock(&rt_rq->rt_runtime_lock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue