sched: remove expired_starving()
remove the expired_starving() heuristics from the core scheduler. CFS does not need it, and this did not really work well in practice anyway, due to the rq->nr_running multiplier to STARVATION_LIMIT. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
f2ac58ee61
commit
c18a17329b
@ -3240,27 +3240,6 @@ unsigned long long task_sched_runtime(struct task_struct *p)
|
|||||||
return ns;
|
return ns;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* We place interactive tasks back into the active array, if possible.
|
|
||||||
*
|
|
||||||
* To guarantee that this does not starve expired tasks we ignore the
|
|
||||||
* interactivity of a task if the first expired task had to wait more
|
|
||||||
* than a 'reasonable' amount of time. This deadline timeout is
|
|
||||||
* load-dependent, as the frequency of array switched decreases with
|
|
||||||
* increasing number of running tasks. We also ignore the interactivity
|
|
||||||
* if a better static_prio task has expired:
|
|
||||||
*/
|
|
||||||
static inline int expired_starving(struct rq *rq)
|
|
||||||
{
|
|
||||||
if (rq->curr->static_prio > rq->best_expired_prio)
|
|
||||||
return 1;
|
|
||||||
if (!STARVATION_LIMIT || !rq->expired_timestamp)
|
|
||||||
return 0;
|
|
||||||
if (jiffies - rq->expired_timestamp > STARVATION_LIMIT * rq->nr_running)
|
|
||||||
return 1;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Account user cpu time to a process.
|
* Account user cpu time to a process.
|
||||||
* @p: the process that the cpu time gets accounted to
|
* @p: the process that the cpu time gets accounted to
|
||||||
@ -3373,7 +3352,7 @@ static void task_running_tick(struct rq *rq, struct task_struct *p)
|
|||||||
|
|
||||||
if (!rq->expired_timestamp)
|
if (!rq->expired_timestamp)
|
||||||
rq->expired_timestamp = jiffies;
|
rq->expired_timestamp = jiffies;
|
||||||
if (!TASK_INTERACTIVE(p) || expired_starving(rq)) {
|
if (!TASK_INTERACTIVE(p)) {
|
||||||
enqueue_task(p, rq->expired);
|
enqueue_task(p, rq->expired);
|
||||||
if (p->static_prio < rq->best_expired_prio)
|
if (p->static_prio < rq->best_expired_prio)
|
||||||
rq->best_expired_prio = p->static_prio;
|
rq->best_expired_prio = p->static_prio;
|
||||||
|
Loading…
Reference in New Issue
Block a user