Re: Increase page fault rate by prezeroing V1 [1/3]: Introduce __GFP_ZERO

From: Andi Kleen
Date: Wed Dec 22 2004 - 05:54:23 EST


On Tue, Dec 21, 2004 at 02:54:46PM -0800, Christoph Lameter wrote:
> On Tue, 21 Dec 2004, Andi Kleen wrote:
>
> > Christoph Lameter <clameter@xxxxxxx> writes:
> > > @@ -0,0 +1,52 @@
> > > +/*
> > > + * Zero a page.
> > > + * rdi page
> > > + */
> > > + .globl zero_page
> > > + .p2align 4
> > > +zero_page:
> > > + xorl %eax,%eax
> > > + movl $4096/64,%ecx
> > > + shl %ecx, %esi
> >
> > Surely must be shl %esi,%ecx
>
> Ahh. Thanks.
>
> > But for the one instruction it seems overkill to me to have a new
> > function. How about you just extend clear_page with the order argument?
>
> We can just
>
> #define clear_page(__p) zero_page(__p, 0)
>
> and remove clear_page?

It depends. If you plan to do really big zero_page then it
may be worth experimenting with cache bypassing clears
(movntq) or even SSE2 16 byte stores (movntdq %xmm..,..)
and take out the rep ; stosq optimization. I tried it all
long ago and it wasn't a win for only 4K.

For normal 4K clear_page that's definitely not a win (tested)
and especially cache bypassing is a loss.

>
> >
> > BTW I think Andrea has been playing with prezeroing on x86 and
> > he found no benefit at all. So it's doubtful it makes any sense
> > on x86/x86-64.
>
> Andrea's approach was:
>
> 1. Zero hot pages
> 2. Zero single pages
>
> which simply results in shifting the processing time somewhere else.

Yours too at least on non Altix no? Can you demonstrate any benefit?
Where are the numbers?

I'm sceptical for example that there will be enough higher orders
to make the batch clearing worthwhile after the system is up for a days.
Normally memory tends to fragment rather badly in Linux.
I suspect after some time your approach will just degenerate to be
the same as Andrea's, even if it should be a win at the beginning (is it?)

-Andi

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/