Re: [PATCH RT] sched/workqueue: Only wake up idle workers if notblocked on sleeping spin lock

From: Sebastian Andrzej Siewior
Date: Fri May 03 2013 - 11:53:50 EST


* Steven Rostedt | 2013-03-18 15:12:49 [-0400]:

>In -rt, most spin_locks() turn into mutexes. One of these spin_lock
>conversions is performed on the workqueue gcwq->lock. When the idle
>worker is worken, the first thing it will do is grab that same lock and
>it too will block, possibly jumping into the same code, but because
>nr_running would already be decremented it prevents an infinite loop.
>
>But this is still a waste of CPU cycles, and it doesn't follow the method
>of mainline, as new workers should only be woken when a worker thread is
>truly going to sleep, and not just blocked on a spin_lock().
>
>Check the saved_state too before waking up new workers.
>
>Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx>

Taking for v3.8-rt.

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/