Re: The performance and behaviour of the anti-fragmentation related patches

Nick Piggin
2007-03-02T06:09:08Z

On Thu, Mar 01, 2007 at 09:53:42PM -0800, Christoph Lameter wrote:
> On Fri, 2 Mar 2007, Nick Piggin wrote:
>
> > > You do not have to deal with TLB entries if you do buffered I/O.
> >
> > Where does the data come from?
>
> >From the I/O controller and from the application.

Why doesn't the application need to deal with TLB entries?

> > > We currently have problems with the kernel limits of 128 SG
> > > entries but the fundamental issue is that we can only do 2 Meg of I/O in
> > > one go given the default limits of the block layer. Typically the number
> > > of hardware SG entrie is also limited. We never will be able to put a
> >
> > Seems like changing the default limits would be the easiest way to
> > fix it then?
>
> This would only be a temporary fix pushing the limits to the double or so?

And using slightly larger page sizes isn't?

> > As far as hardware limits go, I don't think you need to scale that
> > number linearly with the amount of memory you have, or even with the
> > IO throughput. You should reach a point where your command overhead
> > is amortised sufficiently, and the controller will be pipelining the
> > commands.
>
> Amortized? The controller still would have to hunt down the 4kb page
> pieces that we have to feed him right now. Result: Huge scatter gather
> lists that may themselves create issues with higher page order.

What sort of numbers do you have for these controllers that aren't
very good at doing sg?

Isn't the issue was something like your IO controllers have only a
limited number of sg entries, which is fine with 16K pages, but with
4K pages that doesn't give enough data to cover your RAID stripe?

We're never going to do a variable sized pagecache just because of that.