Provided by: libnuma-dev_0.9-1_i386 bug


       set_mempolicy  -  Set  default NUMA memory policy for a process and its


       #include <numaif.h>

       int set_mempolicy(int policy, unsigned long  *nodemask,  unsigned  long


       set_mempolicy  sets  the  NUMA  memory policy of the current process to
       policy A NUMA machine has different memory controllers  with  different
       distances  to  specific  CPUs.  The memory policy defines in which node
       memory is allocated for the  process.  This  system  call  defines  the
       default  policy  for the process, in addition a per memory range policy
       can be set using mbind(2). The policy is only applied when a  new  page
       is  allocated  for  the  process. For anonymous memory this is when the
       page is first touched by the application.

       Available  policies  are  MPOL_DEFAULT,   MPOL_BIND,   MPOL_INTERLEAVE,
       MPOL_PREFERRED.   All  policies  except MPOL_DEFAULT require to specify
       the nodes they apply to in the nodemask parameter.  nodemask is pointer
       to  a bit field of nodes that contains upto maxnode bits. The bit field
       size is rounded to the next multiple of sizeof(unsigned long), but  the
       kernel will only use bits upto maxnode.

       The  MPOL_DEFAULT policy is the default and means to use the underlying
       process policy (which can be modified with set_mempolicy(2)  ).  Unless
       the  process  policy  has been changed this means to allocate memory on
       the node of the CPU that triggered the allocation.  nodemask should  be
       passed as NULL.

       The   MPOL_BIND  policy  is  a  strict  policy  that  restricts  memory
       allocation  to  the  nodes  specified  in  nodemask.   There  won’t  be
       allocations on other nodes.

       MPOL_INTERLEAVE  interleaves  allocations  to  the  nodes  specified in
       nodemask.  This optimizes for bandwidth  instead  of  latency.   To  be
       effective  the  memory  area  should  be  fairly large, at least 1MB or

       MPOL_PREFERRED sets the preferred node for allocation. The kernel  will
       try  to  allocate  in this node first and fall back to other nodes when
       the preferred nodes is low on free memory.  Only the first node in  the
       nodemask  is  used. When no node is set in the mask the current node is
       used for allocation.

       There are  no  flags  defined  right  now.  This  parameter  should  be
       currently always set to 0.

       Memory policy is inherited to children.


       Process policy is not remembered when the page is swapped out.

       Applications  should  consider  using  the  higher  level  functions in
       numa(3) instead. This library is available in the numactl package.


       set_mempolicy returns -1 when an error occurred, otherwise 0.


       The set_mempolicy syscall was added to the Linux  kernel  with  version
       2.6.7rc1.  It is only available on kernels compiled with CONFIG_NUMA.

       Until glibc supports these system calls you can link with -lnuma to get
       system call definitions. libnuma is available in the  numactl  package.
       It also has the numaif.h header.


       mbind(2), get_mempolicy(2), numactl(8), numa(3)