--Andrew Morton <akpm@xxxxxxxx> wrote (on Saturday, October 30, 2004 14:07:32 -0700):
Andrea Arcangeli <andrea@xxxxxxxxxx> wrote:
I think it's much better to have PG_zero in the main page allocator than
to put the ptes in the slab. This way we can share available zero pages with
all zero-page users and we have a central place where people can
generate zero pages and allocate them later efficiently.
Yup.
This gives a whole internal knowledge to the whole buddy system and
per-cpu subsystem of zero pages.
Makes sense. I had a go at this ages ago and wasn't able to demonstrate
much benefit on a mixed workload.
I wonder if it would help if the page zeroing in the idle thread was done
with the CPU cache disabled. It should be pretty easy to test - isn't it
just a matter of setting the cache-disable bit in the kmap_atomic()
operation?
I looked at the basic problem a couple of years ago (based on your own code,
IIRC Andrew) then Andy (cc'ed) did it again with cache writethrough. It doesn't provide any benefit at all, no matter what we did, and it was finally ditched.
I wouldn't bother doing it again personally ... perhaps Andy still has
the last set of results he can send to you.