Re: Maybe a VM bug in 2.4.18-18 from RH 8.0?

Andrew Morton
2002-12-06T23:53:53Z

William Lee Irwin III wrote:
>
> ...
> A 16KB or 64KB kernel allocation unit would then annihilate

You want to be careful about this:

CPU: L1 I cache: 16K, L1 D cache: 16K

Because instantiating a 16k page into user pagetables in
one hit means that it must all be zeroed. With these large
pagesizes that means that the application is likely to get
100% L1 misses against the new page, whereas it currently
gets 100% hits.

I'd expect this performance dropoff to occur when going from 8k
to 16k. By the time you get to 32k it would be quite bad.

One way to address this could be to find a way of making the
pages present, but still cause a fault on first access. Then
have a special-case fastpath in the fault handler to really wipe
the page just before it is used. I don't know how though - maybe
_PAGE_USER?

get_user_pages() would need attention too - you don't want to
allow the user to perform O_DIRECT writes of uninitialised
pages to their files...