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...
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Sat Dec 07 2002 - 22:00:28 EST