On Mon, 2012-09-24 at 18:59 +0530, Raghavendra K T wrote:However Rik had a genuine concern in the cases where runqueue is not
equally distributed and lockholder might actually be on a different run
queue but not running.
Load should eventually get distributed equally -- that's what the
load-balancer is for -- so this is a temporary situation.
We already try and favour the non running vcpu in this case, that's what
yield_to_task_fair() is about. If its still not eligible to run, tough
luck.
Do you think instead of using rq->nr_running, we could get a global
sense of load using avenrun (something like avenrun/num_onlinecpus)
To what purpose? Also, global stuff is expensive, so you should try and
stay away from it as hard as you possibly can.