Re: [PATCH] allocate page caches pages in round robin fasion

From: Andi Kleen
Date: Thu Aug 12 2004 - 20:16:02 EST


Jesse Barnes <jbarnes@xxxxxxxxxxxx> writes:

> On a NUMA machine, page cache pages should be spread out across the system
> since they're generally global in nature and can eat up whole nodes worth of
> memory otherwise. This can end up hurting performance since jobs will have
> to make off node references for much or all of their non-file data.
>
> The patch works by adding an alloc_page_round_robin routine that simply
> allocates on successive nodes each time its called, based on the value of a
> per-cpu variable modulo the number of nodes. The variable is per-cpu to
> avoid cacheline contention when many cpus try to do page cache allocations at

I don't like this approach using a dynamic counter. I think it would
be better to add a new function that takes the vma and uses the offset
into the inode for static interleaving (anonymous memory would still
use the vma offset). This way you would have a good guarantee that the
interleaving stays interleaved even when the system swaps pages in and
out and you're less likely to get anomalies in the page distribution.

-Andi


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/