Re: [PATCH] x86: enable RCU based table free when PARAVIRT

From: Vitaly Kuznetsov
Date: Thu Aug 24 2017 - 04:47:52 EST


Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes:

> On Wed, Aug 23, 2017 at 3:36 PM, Kirill A. Shutemov
> <kirill.shutemov@xxxxxxxxxxxxxxx> wrote:
>>
>> Below is test cases that allocates a lot of page tables and measuare
>> fork/exit time. (I'm not entirely sure it's the best way to stress the
>> codepath.)
>
> Looks ok to me. Doing a profile (without the RCU freeing, obviously) gives me
>
> 0.77% a.out [kernel.vmlinux] [k] free_pgd_range
>
> â
>
> so it does seem to spend time in the page directory code.
>
>> Unpatched: average 4.8322s, stddev 0.114s
>> Patched: average 4.8362s, stddev 0.111s
>
> Ok, I vote for avoiding the complexity of two different behaviors, and
> just making the page table freeing use RCU unconditionally.

Thanks Linus & Kirill,

I actually did a microbenchmark with mmap/munmap too but wasn't able
to see any measurable performace difference.

>
> If actively trying to trigger that code doesn't show a real measurable
> difference, I don't think it matters, and the fewer different code
> paths we have, the better.

I'll send v2 enabling HAVE_RCU_TABLE_FREE on x86 unconditionally, thanks!

--
Vitaly