sched: sync wakeups preempt too
make sure sync wakeups preempt too - the scheduler will not overschedule as we've got various throttles against that. As a result, sync wakeups can be used more widely in the kernel (to signal wakeup affinity between tasks), and no arbitrary latencies will be introduced either. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -1596,16 +1596,7 @@ out_activate:
|
|||||||
schedstat_inc(p, se.nr_wakeups_remote);
|
schedstat_inc(p, se.nr_wakeups_remote);
|
||||||
update_rq_clock(rq);
|
update_rq_clock(rq);
|
||||||
activate_task(rq, p, 1);
|
activate_task(rq, p, 1);
|
||||||
/*
|
check_preempt_curr(rq, p);
|
||||||
* Sync wakeups (i.e. those types of wakeups where the waker
|
|
||||||
* has indicated that it will leave the CPU in short order)
|
|
||||||
* don't trigger a preemption, if the woken up task will run on
|
|
||||||
* this cpu. (in this case the 'I will reschedule' promise of
|
|
||||||
* the waker guarantees that the freshly woken up task is going
|
|
||||||
* to be considered on this CPU.)
|
|
||||||
*/
|
|
||||||
if (!sync || rq->curr == rq->idle)
|
|
||||||
check_preempt_curr(rq, p);
|
|
||||||
success = 1;
|
success = 1;
|
||||||
|
|
||||||
out_running:
|
out_running:
|
||||||
|
Reference in New Issue
Block a user