Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 76138
b: refs/heads/master
c: e1f47d8
h: refs/heads/master
v: v3
  • Loading branch information
Steven Rostedt authored and Ingo Molnar committed Jan 25, 2008
1 parent 24813c9 commit 565143d
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a22d7fc187ed996b66d8439db27b2303f79a8e7b
refs/heads/master: e1f47d891c0f00769d6d40ac5740f943e998d089
20 changes: 16 additions & 4 deletions trunk/kernel/sched_rt.c
Original file line number Diff line number Diff line change
Expand Up @@ -160,11 +160,23 @@ static int select_task_rq_rt(struct task_struct *p, int sync)
struct rq *rq = task_rq(p);

/*
* If the task will not preempt the RQ, try to find a better RQ
* before we even activate the task
* If the current task is an RT task, then
* try to see if we can wake this RT task up on another
* runqueue. Otherwise simply start this RT task
* on its current runqueue.
*
* We want to avoid overloading runqueues. Even if
* the RT task is of higher priority than the current RT task.
* RT tasks behave differently than other tasks. If
* one gets preempted, we try to push it off to another queue.
* So trying to keep a preempting RT task on the same
* cache hot CPU will force the running RT task to
* a cold CPU. So we waste all the cache for the lower
* RT task in hopes of saving some of a RT task
* that is just being woken and probably will have
* cold cache anyway.
*/
if ((p->prio >= rq->rt.highest_prio)
&& (p->nr_cpus_allowed > 1)) {
if (unlikely(rt_task(rq->curr))) {
int cpu = find_lowest_rq(p);

return (cpu == -1) ? task_cpu(p) : cpu;
Expand Down

0 comments on commit 565143d

Please sign in to comment.