1 .\" Copyright 2003,2004 Andi Kleen, SuSE Labs.
2 .\" and Copyright 2007 Lee Schermerhorn, Hewlett Packard
4 .\" Permission is granted to make and distribute verbatim copies of this
5 .\" manual provided the copyright notice and this permission notice are
6 .\" preserved on all copies.
8 .\" Permission is granted to copy and distribute modified versions of this
9 .\" manual under the conditions for verbatim copying, provided that the
10 .\" entire resulting derived work is distributed under the terms of a
11 .\" permission notice identical to this one.
13 .\" Since the Linux kernel and libraries are constantly changing, this
14 .\" manual page may be incorrect or out-of-date. The author(s) assume no
15 .\" responsibility for errors or omissions, or for damages resulting from
16 .\" the use of the information contained herein.
18 .\" Formatted or processed versions of this manual, if unaccompanied by
19 .\" the source, must acknowledge the copyright and authors of this work.
21 .\" 2006-02-03, mtk, substantial wording changes and other improvements
22 .\" 2007-08-27, Lee Schermerhorn <Lee.Schermerhorn@hp.com>
23 .\" more precise specification of behavior.
25 .TH GET_MEMPOLICY 2 2008-08-15 Linux "Linux Programmer's Manual"
27 get_mempolicy \- Retrieve NUMA memory policy for a process
29 .B "#include <numaif.h>"
32 .BI "int get_mempolicy(int *" mode ", unsigned long *" nodemask ,
33 .BI " unsigned long " maxnode ", unsigned long " addr ,
34 .BI " unsigned long " flags );
36 Link with \fI\-lnuma\fP.
40 retrieves the NUMA policy of the calling process or of a memory address,
41 depending on the setting of
44 A NUMA machine has different
45 memory controllers with different distances to specific CPUs.
46 The memory policy defines from which node memory is allocated for
52 then information about the calling process's default policy
54 .BR set_mempolicy (2))
60 may be used to restore the process's policy to its state at
61 the time of the call to
64 .BR set_mempolicy (2).
69 .BR MPOL_F_MEMS_ALLOWED
70 (available since Linux 2.6.24), the
72 argument is ignored and the set of nodes [memories] that the
73 process is allowed to specify in subsequent calls to
77 [in the absense of any
81 It is not permitted to combine
82 .B MPOL_F_MEMS_ALLOWED
92 then information is returned about the policy governing the memory
95 This policy may be different from the process's default policy if
97 or one of the helper functions described in
99 has been used to establish a policy for the memory range containing
104 argument is not NULL, then
106 will store the policy mode and any optional
108 of the requested NUMA policy in the location pointed to by this argument.
111 is not NULL, then the nodemask associated with the policy will be stored
112 in the location pointed to by this argument.
114 specifies the number of node IDs
115 that can be stored into
116 .IR nodemask \(emthat
117 is, the maximum node ID plus one.
118 The value specified by
120 is always rounded to a multiple of
121 .IR "sizeof(unsigned long)" .
130 will return the node ID of the node on which the address
132 is allocated into the location pointed to by
134 If no page has yet been allocated for the specified address,
136 will allocate a page as if the process had performed a read
137 [load] access to that address, and return the ID of the node
138 where that page was allocated.
146 and the process's current policy is
147 .BR MPOL_INTERLEAVE ,
150 will return in the location pointed to by a non-NULL
153 the node ID of the next node that will be used for
154 interleaving of internal kernel pages allocated on behalf of the process.
155 .\" Note: code returns next interleave node via 'mode' argument -Lee Schermerhorn
156 These allocations include pages for memory mapped files in
157 process memory ranges mapped using the
161 flag for read accesses, and in memory ranges mapped with the
163 flag for all accesses.
165 Other flag values are reserved.
167 For an overview of the possible policies see
168 .BR set_mempolicy (2).
173 on error, \-1 is returned and
175 is set to indicate the error.
179 Part of all of the memory range specified by
183 points outside your accessible address space.
186 The value specified by
188 is less than the number of node IDs supported by the system.
191 specified values other than
215 and the current process policy is not
216 .BR MPOL_INTERLEAVE .
220 .B MPOL_F_MEMS_ALLOWED
231 system call was added to the Linux kernel in version 2.6.7.
233 This system call is Linux-specific.
235 For information on library support, see
241 .BR set_mempolicy (2),