Re: sched: tweak select_idle_sibling to look for idle threads

From: Peter Zijlstra
Date: Mon May 02 2016 - 11:10:14 EST


On Mon, May 02, 2016 at 04:50:04PM +0200, Mike Galbraith wrote:

> Order is one thing, but what the old behavior does first and foremost
> is when the box starts getting really busy, only looking at target's
> sibling shuts select_idle_sibling() down instead of letting it wreck
> things. Once cores are moving, there are no large piles of anything
> left to collect other than pain.

> Anyway, the has_idle_cores business seems to shut select_idle_sibling()
> down rather nicely when the the box gets busy. Forcing either core,
> target's sibling or go fish turned in a top end win on 48 rq/socket.

FWIW making the select_idle_core() thing iterate in the old style (start
at target and wrap around) did bring an improvement, even in the face of
has_idle_cores; it shrank the hole between OLD_IDLE and
IDLE_CORES+IDLE_SMT (my variant of your #if 1 thing), but did not
completely eliminate it (for sysbench-psql-oltp).