On Fri, 2007-10-26 at 13:45 -0700, David Rientjes wrote:
You don't need to save the entire mask--just note that NODE_MASK_ALL was
passed--like with my internal MPOL_CONTEXT flag. This would involve
special casing NODE_MASK_ALL in the error checking, as currently
set_mempolicy() complains loudly if you pass non-allowed nodes--see
"contextualize_policy()". [mbind() on the other hand, appears to allow
any nodemask, even outside the cpuset. guess we catch this during
allocation.] This is pretty much the spirit of my patch w/o the API
change/extension [/improvement :)]
For some systems [not mine], the nodemasks can get quite large. I have
a patch, that I've tested atop Mel Gorman's "onezonelist" patches that
replaces the nodemasks embedded in struct mempolicy with pointers to
dynamically allocated ones. However, it's probably not much of a win,
memorywise, if most of the uses are for interleave and bind
policies--both of which would always need the nodemasks in addition to
the pointers.
Now, if we could replace the 'cpuset_mems_allowed' nodemask with a
pointer to something stable, it might be a win.
Lee
-