Re: [PATCHv5 00/11] split page table lock for PMD tables

Kirill A. Shutemov
2013-10-08T08:49:42Z

Andrew Morton wrote:
> On Mon, 7 Oct 2013 16:54:02 +0300 "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> wrote:
>
> > Alex Thorlton noticed that some massively threaded workloads work poorly,
> > if THP enabled. This patchset fixes this by introducing split page table
> > lock for PMD tables. hugetlbfs is not covered yet.
> >
> > This patchset is based on work by Naoya Horiguchi.
>
> I think I'll summarise the results thusly:
>
> : THP off, v3.12-rc2: 18.059261877 seconds time elapsed
> : THP off, patched: 16.768027318 seconds time elapsed
> :
> : THP on, v3.12-rc2: 42.162306788 seconds time elapsed
> : THP on, patched: 8.397885779 seconds time elapsed
> :
> : HUGETLB, v3.12-rc2: 47.574936948 seconds time elapsed
> : HUGETLB, patched: 19.447481153 seconds time elapsed
>
> What sort of machines are we talking about here? Can mortals expect to
> see such results on their hardware, or is this mainly on SGI nuttyware?

I've tested on 4 socket Westmere: 40 cores / 80 threads.

With 4 threads, I can see 8% improvement on THP.
Nothing comparing to 36 times on Alex's 512 cores, but still...

> I'm seeing very few reviewed-by's and acked-by's in here, which is a
> bit surprising and disappointing for a large patchset at v5. Are you
> sure none were missed?

Peter looked through, but I haven't got any tags from him.

> The new code is enabled only for x86. Why is this?

x86 is the only hardware I have to test.

> What must arch maintainers do to enable it? Have you any particular
> suggestions, warnings etc to make their lives easier?

The last patch is a good illustration what need to be done. It's very
straight forward, I don't see any pitfalls.

> I assume the patchset won't damage bisectability? If our bisecter has
> only the first eight patches applied, the fact that
> CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK cannot be enabled protects from
> failures?

Unless CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK defined, pmd_lockptr() will
return mm->page_table_lock: we can convert code to new api stet-by-step
without breaking anything.

--
Kirill A. Shutemov