Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status

The paper below proposes a bandwidth-aware page placement approach for NUMA architectures. As a part of that work, we implemented a new page allocation policy in the Linux kernel, called "weighted interleave" which enables weighted allocation of pages on specified NUMA nodes for the specified applications.

The modified linux kernel is available here.

Example) to allocate the pages for [target_program] on the nodes 0 and 2 with the 1:3 proportions:

./numactl --weights=1,3 --interleave=0,2 [target_program]

D. Gureya, J. Neto, P. Romano, R. Rodrigues, V. Quema, P. Bhatotia, R. Karimi, V. Vlassov, J. Barreto, “BWAP: Bandwidth-Aware Page Placement for NUMA Architectures” [in submission]

Please send an email to "paper[at]0xreza[dot]com", to recieve the pre-print version of the paper.


Simple NUMA policy support. It consists of a numactl program to run other programs with a specific NUMA policy and a libnuma shared library ("NUMA API") to set NUMA policy in applications.

The libnuma binary interface is supposed to stay binary compatible.

Incompatible changes will use new symbol version numbers.

In addition there are various test and utility programs, like numastat to display NUMA allocation statistics and memhog.

In test/ there is a small regression test suite.

Note that regress assumes a unloaded machine with memory free on each node. Otherwise you will get spurious failures in the non-strict policies (prefered, interleave.)

See the manpages numactl.8 and numa.3 for details.

License, Copyrights, Acknowledgements

numactl and the demo programs are under the GNU General Public License, v.2.

libnuma is under the GNU Lesser General Public License, v2.1.

The manpages are under the same license as the Linux manpages (see the files.)

numademo links with a library derived from the C version of STREAM by John D. McCalpin and Joe R. Zagar for one sub benchmark. See stream_lib.c for the license. In particular when you publish numademo output you might need to pay attention there or filter out the STREAM results.

It also uses a public domain Mersenne Twister implementation from Michael Brundage.

Version 2.0.10-rc2: (C)2014 SGI

Author: Andi Kleen, SUSE Labs

Version 2.0.0 by Cliff Wickman (, Christoph Lameter ( and Lee Schermerhorn (


numactl+: numactl supporting weighted interleave page allocation






No packages published