I work a little bit on some NUMA machines here at SGI and was somewhat
disappointed to see the 2.4.10 VM rewritten. The reason is that I found a
small problem with the old VM that I was able to fix, but the fix doesn't
apply to the new VM. I'll try my best to articulate the problem here and
maybe Andrea or some other VM guru can help me out with it.
Each node on one of our systems has a pg_data_t associated with it (no
surprise), and each pg_data_t as a zonelist associated with it. Only one
zone has a non-zero length however, since all of our memory is
DMAable. The problem is that when alloc_pages is called, it used to
eventually call free_shortage and inactive_shortage to see if any zone was
low on memory. Since we really don't care too much at this point if any
*one* zone is low, I fixed up the routines. I added a flag to zone_t to
specify whether or not a zone should be 'aggregated' across pg_data_t
objects. On our arch, all the zones should be so aggregated, so
free/inactive_shortage didn't bother to look for local shortages if this
flag was set. I'm not quite sure how this should be applied to 2.4.10
though.
Is there any easy way to do this sort of thing in 2.4.10? I'd be happy to
write the code if someone can point me in the right direction.
Thanks,
Jesse