sched: Bail out of yield_to when source and target runqueue has one task
authorPeter Zijlstra <peterz@infradead.org>
Tue, 22 Jan 2013 07:39:13 +0000 (13:09 +0530)
committerGleb Natapov <gleb@redhat.com>
Tue, 29 Jan 2013 13:38:37 +0000 (15:38 +0200)
commit7b270f609982f68f2433442bf167f735e7364b06
tree07430a425125c1938fad3befc6debec667310ec4
parentc7c9c56ca26f7b9458711b2d78b60b60e0d38ba7
sched: Bail out of yield_to when source and target runqueue has one task

In case of undercomitted scenarios, especially in large guests
yield_to overhead is significantly high. when run queue length of
source and target is one, take an opportunity to bail out and return
-ESRCH. This return condition can be further exploited to quickly come
out of PLE handler.

(History: Raghavendra initially worked on break out of kvm ple handler upon
 seeing source runqueue length = 1, but it had to export rq length).
 Peter came up with the elegant idea of return -ESRCH in scheduler core.

Signed-off-by: Peter Zijlstra <peterz@infradead.org>
Raghavendra, Checking the rq length of target vcpu condition added.(thanks Avi)
Reviewed-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Signed-off-by: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
Acked-by: Andrew Jones <drjones@redhat.com>
Tested-by: Chegu Vinod <chegu_vinod@hp.com>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
kernel/sched/core.c