You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
100 • <strong>Linux</strong> Symposium 2004 • Volume <strong>One</strong><br />
<strong>The</strong>re has also been the addition<br />
of two new page allocation functions:<br />
alloc_page_vma() and<br />
alloc_page_interleave().<br />
alloc_pages_current() checks that the<br />
system is not currently in_interrupt(),<br />
and if it isn’t, uses the current process’s<br />
process policy for allocation. If<br />
the system is currently in interrupt context,<br />
alloc_pages_current() falls<br />
back to the old default allocation scheme.<br />
alloc_page_interleave() allocates<br />
pages from regions that are bound with an<br />
interleave policy, and is broken out separately<br />
because there are some statistics kept for<br />
interleaved regions. alloc_page_vma()<br />
is a new allocator that allocates only single<br />
pages based on a per-vma policy. <strong>The</strong><br />
alloc_page_vma() function is the only<br />
one of the new allocator functions that must be<br />
called explicity, so you will notice that some<br />
calls to alloc_pages() have been replaced<br />
by calls to alloc_page_vma() throughout<br />
the kernel, as necessary.<br />
6 Legal statement<br />
This work represents the view of the authors, and<br />
does not necessarily represent the view of IBM.<br />
IBM, NUMA-Q and Sequent are registerd trademarks<br />
of International Business Machines Corporation<br />
in the United States, other contries, or both.<br />
Other company, product, or service names may be<br />
trademarks of service names of others.<br />
References<br />
[LWN] LWN Editor, “Scheduling Domains,”<br />
http://lwn.net/Articles/<br />
80911/<br />
[MM2] <strong>Linux</strong> 2.6.6-rc2/mm2 source, http:<br />
//www.kernel.org<br />
5.5 Problems/Future Work<br />
<strong>The</strong>re is no checking that the nodes requested<br />
are online at page fault time, so interactions<br />
with hotpluggable CPUs/memory<br />
will be tricky. <strong>The</strong>re is an asymmetry between<br />
how you bind a memory region and<br />
a whole process’s memory: <strong>One</strong> call takes<br />
a flags argument, and one doesn’t. Also<br />
the maxnode argument is a bit strange,<br />
the get/set_affinity calls take a number of<br />
bytes to be read/written instead of a maximum<br />
CPU number. <strong>The</strong> alloc_page_<br />
interleave() function could be dropped if<br />
we were willing to forgo the statistics that are<br />
kept for interleaved regions. Again, a lack of<br />
symmetry exists because other types of policies<br />
aren’t tracked in any way.