Re: [patch] cache pipe buf page address for non-highmem arch

Andi Kleen
2007-03-27T14:07:25Z

Benjamin LaHaise <bcrl@kvack.org> writes:

> On Fri, Mar 23, 2007 at 10:14:52AM +0000, Christoph Hellwig wrote:
> > I think you're fixing the symptom here and not the cause. If calculating
> > the virtual address of a page is so expensive on your setup it should
> > define WANT_PAGE_VIRTUAL and we should always cache the virtual address
> > in struct page. There's a lot more code, epecially in filesystems that's
> > rather upset about a slow page_address.
>
> Andi shot that down when I brought it up a while ago, as it does show
> up in profiles for networking and other code paths. His argument is that
> the loss of memory is excessive. Personally, I think the benefits of a
> 64 byte struct page on x86-64 outweigh the memory loss, as it means page
> index to address translations are a simple shift.

At some point I had plans to make virt_to_page() etc. faster
by using multiple look up tables that precompute some of the computation
depending on the caller. But it might possibly cause more cache misses
and the function didn't seem that time critical back then.

But if you can really measure it so clearly it might be worth revisiting
that.

-Andi