Re: [LKP] [mm] 9bc8039e71: will-it-scale.per_thread_ops -64.1% regression

From: Linus Torvalds
Date: Mon Nov 05 2018 - 17:14:57 EST


On Mon, Nov 5, 2018 at 12:12 PM Vlastimil Babka <vbabka@xxxxxxx> wrote:
>
> I didn't spot an obvious mistake in the patch itself, so it looks
> like some bad interaction between scheduler and the mmap downgrade?

I'm thinking it's RWSEM_SPIN_ON_OWNER that ends up being confused by
the downgrade.

It looks like the benchmark used to be basically CPU-bound, at about
800% CPU, and now it's somewhere in the 200% CPU region:

will-it-scale.time.percent_of_cpu_this_job_got

800 +-+-------------------------------------------------------------------+
|.+.+.+.+.+.+.+. .+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+.+..+.+.+.+. .+.+.+.|
700 +-+ +. + |
| |
600 +-+ |
| |
500 +-+ |
| |
400 +-+ |
| |
300 +-+ |
| |
200 O-O O O O O O |
| O O O O O O O O O O O O O O O O O O |
100 +-+-------------------------------------------------------------------+

which sounds like the downgrade really messes with the "spin waiting
for lock" logic.

I'm thinking it's the "wake up waiter" logic that has some bad
interaction with spinning, and breaks that whole optimization.

Adding Waiman and Davidlohr to the participants, because they seem to
be the obvious experts in this area.

Linus