Re: sched: tweak select_idle_sibling to look for idle threads

From: Chris Mason
Date: Thu May 05 2016 - 09:59:24 EST


On Thu, May 05, 2016 at 11:33:38AM +0200, Peter Zijlstra wrote:
> On Wed, May 04, 2016 at 01:46:16PM -0400, Chris Mason wrote:
> > It should, make sure you're at the top commit in git.
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/mason/schbench.git
>
> I did double check; I am on the top commit of that. I refetched and
> rebuild just to make tripple sure.
>
> > It's not recent so I'd be surprised if you weren't already there. The
> > default runtime is 30 seconds, but you can use -r to specify something
> > shorter.
> >
> > It's possible I'm missing a wakeup to shut the whole thing down, but I
> > thought I fixed that.
>
> Seems to still be missing, because:
>
> > ./schbench -p 4 -m 1 -t 1
> > Latency percentiles (usec)
> > 50.0000th: 5
> > 75.0000th: 5
> > 90.0000th: 5
> > 95.0000th: 5
> > *99.0000th: 8
> > 99.5000th: 15
> > 99.9000th: 17
> > Over=0, min=0, max=652
> > avg worker transfer: 113768.27 ops/sec 444.41KB/s
>
> is not what mine does. I get ~25sec of cpu time and then it stalls
> forever.
>
> I'll try and have a prod at the program itself if you have no pending
> changes on your end.

Sorry, I don't. Look at sleep_for_runtime() and how I test/set the
global stopping variable in different places. I've almost certainly got
someone waiting on a wakeup that'll never come.

If all else fails, run_msg_thread() can pass a timeout to fwait() for a
less error prone setup. I was just hoping to avoid the timers kernel side.

-chris