Skip to content

Commit

Permalink
sched: remove expired_starving()
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
Ingo Molnar committed Jul 9, 2007
1 parent f2ac58e commit c18a173
Showing 1 changed file with 1 addition and 22 deletions.
23 changes: 1 addition & 22 deletions kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -3240,27 +3240,6 @@ unsigned long long task_sched_runtime(struct task_struct *p)
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.
* @p: the process that the cpu time gets accounted to
Expand Down Expand Up @@ -3373,7 +3352,7 @@ static void task_running_tick(struct rq *rq, struct task_struct *p)

if (!rq->expired_timestamp)
rq->expired_timestamp = jiffies;
if (!TASK_INTERACTIVE(p) || expired_starving(rq)) {
if (!TASK_INTERACTIVE(p)) {
enqueue_task(p, rq->expired);
if (p->static_prio < rq->best_expired_prio)
rq->best_expired_prio = p->static_prio;
Expand Down

0 comments on commit c18a173

Please sign in to comment.