mirror of https://gitee.com/openkylin/linux.git
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:
parent
71e20f1873
commit
9c63d9c021
|
@ -1596,16 +1596,7 @@ static int try_to_wake_up(struct task_struct *p, unsigned int state, int sync)
|
|||
schedstat_inc(p, se.nr_wakeups_remote);
|
||||
update_rq_clock(rq);
|
||||
activate_task(rq, p, 1);
|
||||
/*
|
||||
* 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);
|
||||
check_preempt_curr(rq, p);
|
||||
success = 1;
|
||||
|
||||
out_running:
|
||||
|
|
Loading…
Reference in New Issue