Re: fast path for anonymous memory allocation

Benjamin Herrenschmidt
2004-11-19T07:05:20Z

On Fri, 2004-11-19 at 13:19 +1100, Nick Piggin wrote:
> Christoph Lameter wrote:
> > This patch conflicts with the page fault scalability patch but I could not
> > leave this stone unturned. No significant performance increases so
> > this is just for the record in case someone else gets the same wild idea.
> >
>
> I had a similar wild idea. Mine was to just make sure we have a spare
> per-CPU page ready before taking any locks.
>
> Ahh, you're doing clear_user_highpage after the pte is already set up?
> Won't that be racy? I guess that would be an advantage of my approach,
> the clear_user_highpage can be done first (although that is more likely
> to be wasteful of cache).

Yah, doing clear_user_highpage() after setting the PTE is unfortunately
unacceptable. It show interesting bugs... As soon as the PTE is setup,
another thread on another CPU can hit the page, you'll then clear what
it's writing...

Take for example 2 threads writing to different structures in the same
page of anonymous memory. The first one triggers the allocation, the
second writes right away, "sees" the new PTE, and writes just before the
first one does clear_user_highpage...

Ben.