1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2013-09-28 04:06+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
16 "Content-Type: text/plain; charset=CHARSET\n"
17 "Content-Transfer-Encoding: 8bit\n"
20 #: build/C/man2/get_mempolicy.2:27
26 #: build/C/man2/get_mempolicy.2:27 build/C/man2/mbind.2:45 build/C/man2/set_mempolicy.2:27
32 #: build/C/man2/get_mempolicy.2:27 build/C/man2/getcpu.2:12 build/C/man2/mbind.2:45 build/C/man2/migrate_pages.2:18 build/C/man2/move_pages.2:18 build/C/man7/numa.7:29 build/C/man2/set_mempolicy.2:27
38 #: build/C/man2/get_mempolicy.2:27 build/C/man2/getcpu.2:12 build/C/man2/mbind.2:45 build/C/man2/migrate_pages.2:18 build/C/man2/move_pages.2:18 build/C/man7/numa.7:29 build/C/man2/set_mempolicy.2:27
40 msgid "Linux Programmer's Manual"
44 #: build/C/man2/get_mempolicy.2:28 build/C/man2/getcpu.2:13 build/C/man2/mbind.2:46 build/C/man2/migrate_pages.2:19 build/C/man2/move_pages.2:19 build/C/man7/numa.7:30 build/C/man2/set_mempolicy.2:28
50 #: build/C/man2/get_mempolicy.2:30
51 msgid "get_mempolicy - retrieve NUMA memory policy for a process"
55 #: build/C/man2/get_mempolicy.2:30 build/C/man2/getcpu.2:15 build/C/man2/mbind.2:48 build/C/man2/migrate_pages.2:21 build/C/man2/move_pages.2:21 build/C/man2/set_mempolicy.2:30
61 #: build/C/man2/get_mempolicy.2:32
62 msgid "B<#include E<lt>numaif.hE<gt>>"
66 #: build/C/man2/get_mempolicy.2:37
69 "B<int get_mempolicy(int *>I<mode>B<, unsigned long *>I<nodemask>B<,>\n"
70 "B< unsigned long >I<maxnode>B<, unsigned long "
72 "B< unsigned long >I<flags>B<);>\n"
76 #: build/C/man2/get_mempolicy.2:39 build/C/man2/mbind.2:57 build/C/man2/set_mempolicy.2:38
78 msgid "Link with I<-lnuma>.\n"
82 #: build/C/man2/get_mempolicy.2:40 build/C/man2/getcpu.2:25 build/C/man2/mbind.2:58 build/C/man2/migrate_pages.2:31 build/C/man2/move_pages.2:30 build/C/man7/numa.7:32 build/C/man2/set_mempolicy.2:39
88 #: build/C/man2/get_mempolicy.2:45
90 "B<get_mempolicy>() retrieves the NUMA policy of the calling process or of a "
91 "memory address, depending on the setting of I<flags>."
95 #: build/C/man2/get_mempolicy.2:50 build/C/man2/set_mempolicy.2:54
97 "A NUMA machine has different memory controllers with different distances to "
98 "specific CPUs. The memory policy defines from which node memory is "
99 "allocated for the process."
103 #: build/C/man2/get_mempolicy.2:67
105 "If I<flags> is specified as 0, then information about the calling process's "
106 "default policy (as set by B<set_mempolicy>(2)) is returned. The policy "
107 "returned [I<mode> and I<nodemask>] may be used to restore the process's "
108 "policy to its state at the time of the call to B<get_mempolicy>() using "
109 "B<set_mempolicy>(2)."
113 #: build/C/man2/get_mempolicy.2:89
115 "If I<flags> specifies B<MPOL_F_MEMS_ALLOWED> (available since Linux 2.6.24), "
116 "the I<mode> argument is ignored and the set of nodes [memories] that the "
117 "process is allowed to specify in subsequent calls to B<mbind>(2) or "
118 "B<set_mempolicy>(2) [in the absence of any I<mode flags>] is returned in "
119 "I<nodemask>. It is not permitted to combine B<MPOL_F_MEMS_ALLOWED> with "
120 "either B<MPOL_F_ADDR> or B<MPOL_F_NODE>."
124 #: build/C/man2/get_mempolicy.2:103
126 "If I<flags> specifies B<MPOL_F_ADDR>, then information is returned about the "
127 "policy governing the memory address given in I<addr>. This policy may be "
128 "different from the process's default policy if B<mbind>(2) or one of the "
129 "helper functions described in B<numa>(3) has been used to establish a "
130 "policy for the memory range containing I<addr>."
134 #: build/C/man2/get_mempolicy.2:124
136 "If the I<mode> argument is not NULL, then B<get_mempolicy>() will store the "
137 "policy mode and any optional I<mode flags> of the requested NUMA policy in "
138 "the location pointed to by this argument. If I<nodemask> is not NULL, then "
139 "the nodemask associated with the policy will be stored in the location "
140 "pointed to by this argument. I<maxnode> specifies the number of node IDs "
141 "that can be stored into I<nodemask>\\(emthat is, the maximum node ID plus "
142 "one. The value specified by I<maxnode> is always rounded to a multiple of "
143 "I<sizeof(unsigned long)>."
147 #: build/C/man2/get_mempolicy.2:141
149 "If I<flags> specifies both B<MPOL_F_NODE> and B<MPOL_F_ADDR>, "
150 "B<get_mempolicy>() will return the node ID of the node on which the address "
151 "I<addr> is allocated into the location pointed to by I<mode>. If no page "
152 "has yet been allocated for the specified address, B<get_mempolicy>() will "
153 "allocate a page as if the process had performed a read [load] access to that "
154 "address, and return the ID of the node where that page was allocated."
157 #. Note: code returns next interleave node via 'mode' argument -Lee Schermerhorn
159 #: build/C/man2/get_mempolicy.2:166
161 "If I<flags> specifies B<MPOL_F_NODE>, but not B<MPOL_F_ADDR>, and the "
162 "process's current policy is B<MPOL_INTERLEAVE>, then B<get_mempolicy>() "
163 "will return in the location pointed to by a non-NULL I<mode> argument, the "
164 "node ID of the next node that will be used for interleaving of internal "
165 "kernel pages allocated on behalf of the process. These allocations include "
166 "pages for memory mapped files in process memory ranges mapped using the "
167 "B<mmap>(2) call with the B<MAP_PRIVATE> flag for read accesses, and in "
168 "memory ranges mapped with the B<MAP_SHARED> flag for all accesses."
172 #: build/C/man2/get_mempolicy.2:168
173 msgid "Other flag values are reserved."
177 #: build/C/man2/get_mempolicy.2:171
178 msgid "For an overview of the possible policies see B<set_mempolicy>(2)."
182 #: build/C/man2/get_mempolicy.2:171 build/C/man2/getcpu.2:61 build/C/man2/mbind.2:309 build/C/man2/migrate_pages.2:88 build/C/man2/move_pages.2:141 build/C/man2/set_mempolicy.2:220
188 #: build/C/man2/get_mempolicy.2:178
190 "On success, B<get_mempolicy>() returns 0; on error, -1 is returned and "
191 "I<errno> is set to indicate the error."
195 #: build/C/man2/get_mempolicy.2:178 build/C/man2/getcpu.2:66 build/C/man2/mbind.2:317 build/C/man2/migrate_pages.2:96 build/C/man2/move_pages.2:150 build/C/man2/set_mempolicy.2:227
201 #: build/C/man2/get_mempolicy.2:179 build/C/man2/getcpu.2:67 build/C/man2/mbind.2:319 build/C/man2/move_pages.2:159 build/C/man2/set_mempolicy.2:228
207 #: build/C/man2/get_mempolicy.2:186 build/C/man2/set_mempolicy.2:235
209 "Part of all of the memory range specified by I<nodemask> and I<maxnode> "
210 "points outside your accessible address space."
214 #: build/C/man2/get_mempolicy.2:186 build/C/man2/mbind.2:327 build/C/man2/move_pages.2:162 build/C/man2/set_mempolicy.2:235
220 #: build/C/man2/get_mempolicy.2:230
222 "The value specified by I<maxnode> is less than the number of node IDs "
223 "supported by the system. Or I<flags> specified values other than "
224 "B<MPOL_F_NODE> or B<MPOL_F_ADDR>; or I<flags> specified B<MPOL_F_ADDR> and "
225 "I<addr> is NULL, or I<flags> did not specify B<MPOL_F_ADDR> and I<addr> is "
226 "not NULL. Or, I<flags> specified B<MPOL_F_NODE> but not B<MPOL_F_ADDR> and "
227 "the current process policy is not B<MPOL_INTERLEAVE>. Or, I<flags> "
228 "specified B<MPOL_F_MEMS_ALLOWED> with either B<MPOL_F_ADDR> or "
229 "B<MPOL_F_NODE>. (And there are other B<EINVAL> cases.)"
233 #: build/C/man2/get_mempolicy.2:230 build/C/man2/getcpu.2:70 build/C/man2/mbind.2:399 build/C/man2/migrate_pages.2:112 build/C/man2/move_pages.2:190 build/C/man2/set_mempolicy.2:275
239 #: build/C/man2/get_mempolicy.2:234
241 "The B<get_mempolicy>() system call was added to the Linux kernel in version "
246 #: build/C/man2/get_mempolicy.2:234 build/C/man2/getcpu.2:73 build/C/man2/mbind.2:403 build/C/man2/migrate_pages.2:116 build/C/man2/move_pages.2:193 build/C/man7/numa.7:148 build/C/man2/set_mempolicy.2:279
248 msgid "CONFORMING TO"
252 #: build/C/man2/get_mempolicy.2:236 build/C/man2/mbind.2:405 build/C/man2/migrate_pages.2:118 build/C/man2/move_pages.2:195 build/C/man2/set_mempolicy.2:281
253 msgid "This system call is Linux-specific."
257 #: build/C/man2/get_mempolicy.2:236 build/C/man2/getcpu.2:76 build/C/man2/mbind.2:405 build/C/man2/migrate_pages.2:118 build/C/man2/move_pages.2:195 build/C/man7/numa.7:150 build/C/man2/set_mempolicy.2:281
263 #: build/C/man2/get_mempolicy.2:239 build/C/man2/mbind.2:408 build/C/man2/migrate_pages.2:121 build/C/man2/move_pages.2:198 build/C/man2/set_mempolicy.2:289
264 msgid "For information on library support, see B<numa>(7)."
268 #: build/C/man2/get_mempolicy.2:239 build/C/man2/getcpu.2:139 build/C/man2/mbind.2:457 build/C/man2/migrate_pages.2:148 build/C/man2/move_pages.2:225 build/C/man7/numa.7:183 build/C/man2/set_mempolicy.2:289
274 #: build/C/man2/get_mempolicy.2:247
276 "B<getcpu>(2), B<mbind>(2), B<mmap>(2), B<set_mempolicy>(2), B<numa>(3), "
277 "B<numa>(7), B<numactl>(8)"
281 #: build/C/man2/get_mempolicy.2:247 build/C/man2/getcpu.2:145 build/C/man2/mbind.2:468 build/C/man2/migrate_pages.2:161 build/C/man2/move_pages.2:235 build/C/man7/numa.7:191 build/C/man2/set_mempolicy.2:298
287 #: build/C/man2/get_mempolicy.2:254 build/C/man2/getcpu.2:152 build/C/man2/mbind.2:475 build/C/man2/migrate_pages.2:168 build/C/man2/move_pages.2:242 build/C/man7/numa.7:198 build/C/man2/set_mempolicy.2:305
289 "This page is part of release 3.54 of the Linux I<man-pages> project. A "
290 "description of the project, and information about reporting bugs, can be "
291 "found at \\%http://www.kernel.org/doc/man-pages/."
295 #: build/C/man2/getcpu.2:12
301 #: build/C/man2/getcpu.2:12
307 #: build/C/man2/getcpu.2:15
308 msgid "getcpu - determine CPU and NUMA node on which the calling thread is running"
312 #: build/C/man2/getcpu.2:18
314 msgid "B<#include E<lt>linux/getcpu.hE<gt>>\n"
318 #: build/C/man2/getcpu.2:21
321 "B<int getcpu(unsigned *>I<cpu>B<, unsigned *>I<node>B<, struct getcpu_cache "
326 #: build/C/man2/getcpu.2:25
327 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
331 #: build/C/man2/getcpu.2:42
333 "The B<getcpu>() system call identifies the processor and node on which the "
334 "calling thread or process is currently running and writes them into the "
335 "integers pointed to by the I<cpu> and I<node> arguments. The processor is a "
336 "unique small integer identifying a CPU. The node is a unique small "
337 "identifier identifying a NUMA node. When either I<cpu> or I<node> is NULL "
338 "nothing is written to the respective pointer."
342 #: build/C/man2/getcpu.2:46
344 "The third argument to this system call is nowadays unused, and should be "
345 "specified as NULL unless portability to Linux 2.6.23 or earlier is required "
350 #: build/C/man2/getcpu.2:61
352 "The information placed in I<cpu> is guaranteed to be current only at the "
353 "time of the call: unless the CPU affinity has been fixed using "
354 "B<sched_setaffinity>(2), the kernel might change the CPU at any time. "
355 "(Normally this does not happen because the scheduler tries to minimize "
356 "movements between CPUs to keep caches hot, but it is possible.) The caller "
357 "must allow for the possibility that the information returned in I<cpu> and "
358 "I<node> is no longer current by the time the call returns."
362 #: build/C/man2/getcpu.2:66
364 "On success, 0 is returned. On error, -1 is returned, and I<errno> is set "
369 #: build/C/man2/getcpu.2:70
370 msgid "Arguments point outside the calling process's address space."
374 #: build/C/man2/getcpu.2:73
375 msgid "B<getcpu>() was added in kernel 2.6.19 for x86_64 and i386."
379 #: build/C/man2/getcpu.2:76
380 msgid "B<getcpu>() is Linux specific."
384 #: build/C/man2/getcpu.2:82
386 "Linux makes a best effort to make this call as fast possible. The intention "
387 "of B<getcpu>() is to allow programs to make optimizations with per-CPU data "
388 "or for NUMA optimization."
392 #: build/C/man2/getcpu.2:88
394 "Glibc does not provide a wrapper for this system call; call it using "
395 "B<syscall>(2); or use B<sched_getcpu>(3) instead."
398 #. commit 4307d1e5ada595c87f9a4d16db16ba5edb70dcb1
399 #. Author: Ingo Molnar <mingo@elte.hu>
400 #. Date: Wed Nov 7 18:37:48 2007 +0100
401 #. x86: ignore the sys_getcpu() tcache parameter
403 #. ===== Before kernel 2.6.24: =====
406 #. .IR "struct getcpu_cache"
407 #. that is used as a cache by
409 #. The caller should put the cache into a thread-local variable
410 #. if the process is multithreaded,
411 #. because the cache cannot be shared between different threads.
416 #. will use it to speed up operation.
417 #. The information inside the cache is private to the system call
418 #. and should not be accessed by the user program.
419 #. The information placed in the cache can change between kernel releases.
421 #. When no cache is specified
424 #. but always retrieve the current CPU and node information.
428 #. However, the cached information is updated only once per jiffy (see
430 #. This means that the information could theoretically be out of date,
431 #. although in practice the scheduler's attempt to maintain
432 #. soft CPU affinity means that the information is unlikely to change
433 #. over the course of the caching interval.
435 #: build/C/man2/getcpu.2:139
437 "The I<tcache> argument is unused since Linux 2.6.24. In earlier kernels, if "
438 "this argument was non-NULL, then it specified a pointer to a "
439 "caller-allocated buffer in thread-local storage that was used to provide a "
440 "caching mechanism for B<getcpu>(). Use of the cache could speed B<getcpu>() "
441 "calls, at the cost that there was a very small chance that the returned "
442 "information would be out of date. The caching mechanism was considered to "
443 "cause problems when migrating threads between CPUs, and so the argument is "
448 #: build/C/man2/getcpu.2:145
450 "B<mbind>(2), B<sched_setaffinity>(2), B<set_mempolicy>(2), "
451 "B<sched_getcpu>(3), B<cpuset>(7)"
455 #: build/C/man2/mbind.2:45
461 #: build/C/man2/mbind.2:48
462 msgid "mbind - set memory policy for a memory range"
466 #: build/C/man2/mbind.2:51 build/C/man2/migrate_pages.2:24 build/C/man2/move_pages.2:24 build/C/man2/set_mempolicy.2:33
468 msgid "B<#include E<lt>numaif.hE<gt>>\n"
472 #: build/C/man2/mbind.2:55
475 "B<int mbind(void *>I<addr>B<, unsigned long >I<len>B<, int >I<mode>B<,>\n"
476 "B< unsigned long *>I<nodemask>B<, unsigned long >I<maxnode>B<,>\n"
477 "B< unsigned >I<flags>B<);>\n"
481 #: build/C/man2/mbind.2:68
483 "B<mbind>() sets the NUMA memory policy, which consists of a policy mode and "
484 "zero or more nodes, for the memory range starting with I<addr> and "
485 "continuing for I<len> bytes. The memory policy defines from which node "
486 "memory is allocated."
490 #: build/C/man2/mbind.2:90
492 "If the memory range specified by the I<addr> and I<len> arguments includes "
493 "an \"anonymous\" region of memory\\(emthat is a region of memory created "
494 "using the B<mmap>(2) system call with the B<MAP_ANONYMOUS>\\(emor a memory "
495 "mapped file, mapped using the B<mmap>(2) system call with the "
496 "B<MAP_PRIVATE> flag, pages will be allocated only according to the specified "
497 "policy when the application writes [stores] to the page. For anonymous "
498 "regions, an initial read access will use a shared page in the kernel "
499 "containing all zeros. For a file mapped with B<MAP_PRIVATE>, an initial "
500 "read access will allocate pages according to the process policy of the "
501 "process that causes the page to be allocated. This may not be the process "
502 "that called B<mbind>()."
506 #: build/C/man2/mbind.2:98
508 "The specified policy will be ignored for any B<MAP_SHARED> mappings in the "
509 "specified memory range. Rather the pages will be allocated according to the "
510 "process policy of the process that caused the page to be allocated. Again, "
511 "this may not be the process that called B<mbind>()."
515 #: build/C/man2/mbind.2:115
517 "If the specified memory range includes a shared memory region created using "
518 "the B<shmget>(2) system call and attached using the B<shmat>(2) system "
519 "call, pages allocated for the anonymous or shared memory region will be "
520 "allocated according to the policy specified, regardless which process "
521 "attached to the shared memory segment causes the allocation. If, however, "
522 "the shared memory region was created with the B<SHM_HUGETLB> flag, the huge "
523 "pages will be allocated according to the policy specified only if the page "
524 "allocation is caused by the process that calls B<mbind>() for that region."
528 #: build/C/man2/mbind.2:126
530 "By default, B<mbind>() has an effect only for new allocations; if the pages "
531 "inside the range have been already touched before setting the policy, then "
532 "the policy has no effect. This default behavior may be overridden by the "
533 "B<MPOL_MF_MOVE> and B<MPOL_MF_MOVE_ALL> flags described below."
537 #: build/C/man2/mbind.2:141
539 "The I<mode> argument must specify one of B<MPOL_DEFAULT>, B<MPOL_BIND>, "
540 "B<MPOL_INTERLEAVE> or B<MPOL_PREFERRED>. All policy modes except "
541 "B<MPOL_DEFAULT> require the caller to specify via the I<nodemask> argument, "
542 "the node or nodes to which the mode applies."
546 #: build/C/man2/mbind.2:149
548 "The I<mode> argument may also include an optional I<mode flag >. The "
549 "supported I<mode flags> are:"
553 #: build/C/man2/mbind.2:149
555 msgid "B<MPOL_F_STATIC_NODES> (since Linux-2.6.26)"
559 #: build/C/man2/mbind.2:159
561 "A nonempty I<nodemask> specifies physical node ids. Linux does not remap "
562 "the I<nodemask> when the process moves to a different cpuset context, nor "
563 "when the set of nodes allowed by the process's current cpuset context "
568 #: build/C/man2/mbind.2:159
570 msgid "B<MPOL_F_RELATIVE_NODES> (since Linux-2.6.26)"
574 #: build/C/man2/mbind.2:165 build/C/man2/set_mempolicy.2:113
576 "A nonempty I<nodemask> specifies node ids that are relative to the set of "
577 "node ids allowed by the process's current cpuset."
581 #: build/C/man2/mbind.2:193
583 "I<nodemask> points to a bit mask of nodes containing up to I<maxnode> bits. "
584 "The bit mask size is rounded to the next multiple of I<sizeof(unsigned "
585 "long)>, but the kernel will use bits only up to I<maxnode>. A NULL value of "
586 "I<nodemask> or a I<maxnode> value of zero specifies the empty set of nodes. "
587 "If the value of I<maxnode> is zero, the I<nodemask> argument is ignored. "
588 "Where a I<nodemask> is required, it must contain at least one node that is "
589 "on-line, allowed by the process's current cpuset context [unless the "
590 "B<MPOL_F_STATIC_NODES> mode flag is specified], and contains memory."
594 #: build/C/man2/mbind.2:215
596 "The B<MPOL_DEFAULT> mode requests that any nondefault policy be removed, "
597 "restoring default behavior. When applied to a range of memory via "
598 "B<mbind>(), this means to use the process policy, which may have been set "
599 "with B<set_mempolicy>(2). If the mode of the process policy is also "
600 "B<MPOL_DEFAULT>, the system-wide default policy will be used. The "
601 "system-wide default policy allocates pages on the node of the CPU that "
602 "triggers the allocation. For B<MPOL_DEFAULT>, the I<nodemask> and "
603 "I<maxnode> arguments must be specify the empty set of nodes."
607 #: build/C/man2/mbind.2:232
609 "The B<MPOL_BIND> mode specifies a strict policy that restricts memory "
610 "allocation to the nodes specified in I<nodemask>. If I<nodemask> specifies "
611 "more than one node, page allocations will come from the node with the lowest "
612 "numeric node ID first, until that node contains no free memory. Allocations "
613 "will then come from the node with the next highest node ID specified in "
614 "I<nodemask> and so forth, until none of the specified nodes contain free "
615 "memory. Pages will not be allocated from any node not specified in the "
620 #: build/C/man2/mbind.2:245
622 "The B<MPOL_INTERLEAVE> mode specifies that page allocations be interleaved "
623 "across the set of nodes specified in I<nodemask>. This optimizes for "
624 "bandwidth instead of latency by spreading out pages and memory accesses to "
625 "those pages across multiple nodes. To be effective the memory area should "
626 "be fairly large, at least 1MB or bigger with a fairly uniform access "
627 "pattern. Accesses to a single page of the area will still be limited to the "
628 "memory bandwidth of a single node."
632 #: build/C/man2/mbind.2:264
634 "B<MPOL_PREFERRED> sets the preferred node for allocation. The kernel will "
635 "try to allocate pages from this node first and fall back to other nodes if "
636 "the preferred nodes is low on free memory. If I<nodemask> specifies more "
637 "than one node ID, the first node in the mask will be selected as the "
638 "preferred node. If the I<nodemask> and I<maxnode> arguments specify the "
639 "empty set, then the memory is allocated on the node of the CPU that "
640 "triggered the allocation. This is the only way to specify \"local "
641 "allocation\" for a range of memory via B<mbind>()."
644 #. According to the kernel code, the following is not true
645 #. --Lee Schermerhorn
646 #. In 2.6.16 or later the kernel will also try to move pages
647 #. to the requested node with this flag.
649 #: build/C/man2/mbind.2:280
651 "If B<MPOL_MF_STRICT> is passed in I<flags> and I<mode> is not "
652 "B<MPOL_DEFAULT>, then the call will fail with the error B<EIO> if the "
653 "existing pages in the memory range don't follow the policy."
657 #: build/C/man2/mbind.2:293
659 "If B<MPOL_MF_MOVE> is specified in I<flags>, then the kernel will attempt to "
660 "move all the existing pages in the memory range so that they follow the "
661 "policy. Pages that are shared with other processes will not be moved. If "
662 "B<MPOL_MF_STRICT> is also specified, then the call will fail with the error "
663 "B<EIO> if some pages could not be moved."
666 #. ---------------------------------------------------------------
668 #: build/C/man2/mbind.2:309
670 "If B<MPOL_MF_MOVE_ALL> is passed in I<flags>, then the kernel will attempt "
671 "to move all existing pages in the memory range regardless of whether other "
672 "processes use the pages. The calling process must be privileged "
673 "(B<CAP_SYS_NICE>) to use this flag. If B<MPOL_MF_STRICT> is also "
674 "specified, then the call will fail with the error B<EIO> if some pages could "
678 #. ---------------------------------------------------------------
680 #: build/C/man2/mbind.2:317
682 "On success, B<mbind>() returns 0; on error, -1 is returned and I<errno> is "
683 "set to indicate the error."
687 #: build/C/man2/mbind.2:327
689 "Part or all of the memory range specified by I<nodemask> and I<maxnode> "
690 "points outside your accessible address space. Or, there was an unmapped "
691 "hole in the specified memory range."
694 #. As at 2.6.23, this limit is "a page worth of bits", e.g.,
695 #. 8 * 4096 bits, assuming a 4kB page size.
697 #: build/C/man2/mbind.2:375
699 "An invalid value was specified for I<flags> or I<mode>; or I<addr + len> was "
700 "less than I<addr>; or I<addr> is not a multiple of the system page size. "
701 "Or, I<mode> is B<MPOL_DEFAULT> and I<nodemask> specified a nonempty set; or "
702 "I<mode> is B<MPOL_BIND> or B<MPOL_INTERLEAVE> and I<nodemask> is empty. Or, "
703 "I<maxnode> exceeds a kernel-imposed limit. Or, I<nodemask> specifies one or "
704 "more node IDs that are greater than the maximum supported node ID. Or, none "
705 "of the node IDs specified by I<nodemask> are on-line and allowed by the "
706 "process's current cpuset context, or none of the specified nodes contain "
707 "memory. Or, the I<mode> argument specified both B<MPOL_F_STATIC_NODES> and "
708 "B<MPOL_F_RELATIVE_NODES>."
712 #: build/C/man2/mbind.2:375
718 #: build/C/man2/mbind.2:386
720 "B<MPOL_MF_STRICT> was specified and an existing page was already on a node "
721 "that does not follow the policy; or B<MPOL_MF_MOVE> or B<MPOL_MF_MOVE_ALL> "
722 "was specified and the kernel was unable to move all existing pages in the "
727 #: build/C/man2/mbind.2:386 build/C/man2/set_mempolicy.2:272
733 #: build/C/man2/mbind.2:389 build/C/man2/set_mempolicy.2:275
734 msgid "Insufficient kernel memory was available."
738 #: build/C/man2/mbind.2:389 build/C/man2/migrate_pages.2:97 build/C/man2/move_pages.2:178
743 #. ---------------------------------------------------------------
745 #: build/C/man2/mbind.2:399
747 "The I<flags> argument included the B<MPOL_MF_MOVE_ALL> flag and the caller "
748 "does not have the B<CAP_SYS_NICE> privilege."
752 #: build/C/man2/mbind.2:403
753 msgid "The B<mbind>() system call was added to the Linux kernel in version 2.6.7."
757 #: build/C/man2/mbind.2:413
759 "NUMA policy is not supported on a memory mapped file range that was mapped "
760 "with the B<MAP_SHARED> flag."
764 #: build/C/man2/mbind.2:445
766 "The B<MPOL_DEFAULT> mode can have different effects for B<mbind>() and "
767 "B<set_mempolicy>(2). When B<MPOL_DEFAULT> is specified for "
768 "B<set_mempolicy>(2), the process's policy reverts to system default policy "
769 "or local allocation. When B<MPOL_DEFAULT> is specified for a range of "
770 "memory using B<mbind>(), any pages subsequently allocated for that range "
771 "will use the process's policy, as set by B<set_mempolicy>(2). This "
772 "effectively removes the explicit policy from the specified range, \"falling "
773 "back\" to a possibly nondefault policy. To select explicit \"local "
774 "allocation\" for a memory range, specify a I<mode> of B<MPOL_PREFERRED> with "
775 "an empty set of nodes. This method will work for B<set_mempolicy>(2), as "
780 #: build/C/man2/mbind.2:449
782 "Support for huge page policy was added with 2.6.16. For interleave policy "
783 "to be effective on huge page mappings the policied memory needs to be tens "
784 "of megabytes or larger."
788 #: build/C/man2/mbind.2:452
789 msgid "B<MPOL_MF_STRICT> is ignored on huge page mappings."
793 #: build/C/man2/mbind.2:457
795 "B<MPOL_MF_MOVE> and B<MPOL_MF_MOVE_ALL> are available only on Linux 2.6.16 "
800 #: build/C/man2/mbind.2:468
802 "B<get_mempolicy>(2), B<getcpu>(2), B<mmap>(2), B<set_mempolicy>(2), "
803 "B<shmat>(2), B<shmget>(2), B<numa>(3), B<cpuset>(7), B<numa>(7), "
808 #: build/C/man2/migrate_pages.2:18
810 msgid "MIGRATE_PAGES"
814 #: build/C/man2/migrate_pages.2:18
820 #: build/C/man2/migrate_pages.2:21
821 msgid "migrate_pages - move all pages in a process to another set of nodes"
825 #: build/C/man2/migrate_pages.2:28
828 "B<long migrate_pages(int >I<pid>B<, unsigned long >I<maxnode,>\n"
829 "B< const unsigned long *>I<old_nodes,>\n"
830 "B< const unsigned long *>I<new_nodes>B<);>\n"
834 #: build/C/man2/migrate_pages.2:31 build/C/man2/move_pages.2:30
835 msgid "Link with I<-lnuma>."
839 #: build/C/man2/migrate_pages.2:47
841 "B<migrate_pages>() attempts to move all pages of the process I<pid> that "
842 "are in memory nodes I<old_nodes> to the memory nodes in I<new_nodes>. Pages "
843 "not located in any node in I<old_nodes> will not be migrated. As far as "
844 "possible, the kernel maintains the relative topology relationship inside "
845 "I<old_nodes> during the migration to I<new_nodes>."
849 #: build/C/man2/migrate_pages.2:69
851 "The I<old_nodes> and I<new_nodes> arguments are pointers to bit masks of "
852 "node numbers, with up to I<maxnode> bits in each mask. These masks are "
853 "maintained as arrays of unsigned I<long> integers (in the last I<long> "
854 "integer, the bits beyond those specified by I<maxnode> are ignored). The "
855 "I<maxnode> argument is the maximum node number in the bit mask plus one "
856 "(this is the same as in B<mbind>(2), but different from B<select>(2))."
860 #: build/C/man2/migrate_pages.2:83
862 "The I<pid> argument is the ID of the process whose pages are to be moved. "
863 "To move pages in another process, the caller must be privileged "
864 "(B<CAP_SYS_NICE>) or the real or effective user ID of the calling process "
865 "must match the real or saved-set user ID of the target process. If I<pid> "
866 "is 0, then B<migrate_pages>() moves pages of the calling process."
870 #: build/C/man2/migrate_pages.2:88
872 "Pages shared with another process will be moved only if the initiating "
873 "process has the B<CAP_SYS_NICE> privilege."
877 #: build/C/man2/migrate_pages.2:96
879 "On success B<migrate_pages>() returns the number of pages that could not be "
880 "moved (i.e., a return of zero means that all pages were successfully "
881 "moved). On error, it returns -1, and sets I<errno> to indicate the error."
885 #: build/C/man2/migrate_pages.2:106
887 "Insufficient privilege (B<CAP_SYS_NICE>) to move pages of the process "
888 "specified by I<pid>, or insufficient privilege (B<CAP_SYS_NICE>) to access "
889 "the specified target nodes."
893 #: build/C/man2/migrate_pages.2:106 build/C/man2/move_pages.2:187
898 #. FIXME There are other errors
900 #: build/C/man2/migrate_pages.2:112
901 msgid "No process matching I<pid> could be found."
905 #: build/C/man2/migrate_pages.2:116
907 "The B<migrate_pages>() system call first appeared on Linux in version "
912 #: build/C/man2/migrate_pages.2:130
914 "Use B<get_mempolicy>(2) with the B<MPOL_F_MEMS_ALLOWED> flag to obtain the "
915 "set of nodes that are allowed by the calling process's cpuset. Note that "
916 "this information is subject to change at any time by manual or automatic "
917 "reconfiguration of the cpuset."
921 #: build/C/man2/migrate_pages.2:142
923 "Use of B<migrate_pages>() may result in pages whose location (node) "
924 "violates the memory policy established for the specified addresses (see "
925 "B<mbind>(2)) and/or the specified process (see B<set_mempolicy>(2)). That "
926 "is, memory policy does not constrain the destination nodes used by "
927 "B<migrate_pages>()."
931 #: build/C/man2/migrate_pages.2:148 build/C/man2/move_pages.2:225
933 "The I<E<lt>numaif.hE<gt>> header is not included with glibc, but requires "
934 "installing I<libnuma-devel> or a similar package."
938 #: build/C/man2/migrate_pages.2:158 build/C/man2/move_pages.2:235
940 "B<get_mempolicy>(2), B<mbind>(2), B<set_mempolicy>(2), B<numa>(3), "
941 "B<numa_maps>(5), B<cpuset>(7), B<numa>(7), B<migratepages>(8), "
946 #: build/C/man2/migrate_pages.2:161
947 msgid "I<Documentation/vm/page_migration> in the Linux kernel source tree"
951 #: build/C/man2/move_pages.2:18
957 #: build/C/man2/move_pages.2:18
963 #: build/C/man2/move_pages.2:21
964 msgid "move_pages - move individual pages of a process to another node"
968 #: build/C/man2/move_pages.2:27
971 "B<long move_pages(int >I<pid>B<, unsigned long count, void **>I<pages>B<,>\n"
972 "B< const int *>I<nodes>B<, int *>I<status>B<, int "
977 #: build/C/man2/move_pages.2:43
979 "B<move_pages>() moves the specified I<pages> of the process I<pid> to the "
980 "memory nodes specified by I<nodes>. The result of the move is reflected in "
981 "I<status>. The I<flags> indicate constraints on the pages to be moved."
985 #: build/C/man2/move_pages.2:56
987 "I<pid> is the ID of the process in which pages are to be moved. To move "
988 "pages in another process, the caller must be privileged (B<CAP_SYS_NICE>) "
989 "or the real or effective user ID of the calling process must match the real "
990 "or saved-set user ID of the target process. If I<pid> is 0, then "
991 "B<move_pages>() moves pages of the calling process."
995 #: build/C/man2/move_pages.2:64
997 "I<count> is the number of pages to move. It defines the size of the three "
998 "arrays I<pages>, I<nodes>, and I<status>."
1001 #. FIXME what if they are not aligned?
1003 #: build/C/man2/move_pages.2:71
1005 "I<pages> is an array of pointers to the pages that should be moved. These "
1006 "are pointers that should be aligned to page boundaries. Addresses are "
1007 "specified as seen by the process specified by I<pid>."
1011 #: build/C/man2/move_pages.2:84
1013 "I<nodes> is an array of integers that specify the desired location for each "
1014 "page. Each element in the array is a node number. I<nodes> can also be "
1015 "NULL, in which case B<move_pages>() does not move any pages but instead "
1016 "will return the node where each page currently resides, in the I<status> "
1017 "array. Obtaining the status of each page may be necessary to determine "
1018 "pages that need to be moved."
1022 #: build/C/man2/move_pages.2:90
1024 "I<status> is an array of integers that return the status of each page. The "
1025 "array contains valid values only if B<move_pages>() did not return an "
1030 #: build/C/man2/move_pages.2:102
1032 "I<flags> specify what types of pages to move. B<MPOL_MF_MOVE> means that "
1033 "only pages that are in exclusive use by the process are to be moved. "
1034 "B<MPOL_MF_MOVE_ALL> means that pages shared between multiple processes can "
1035 "also be moved. The process must be privileged (B<CAP_SYS_NICE>) to use "
1036 "B<MPOL_MF_MOVE_ALL>."
1040 #: build/C/man2/move_pages.2:102
1042 msgid "Page states in the status array"
1046 #: build/C/man2/move_pages.2:106
1047 msgid "The following values can be returned in each element of the I<status> array."
1051 #: build/C/man2/move_pages.2:106
1053 msgid "B<0..MAX_NUMNODES>"
1057 #: build/C/man2/move_pages.2:109
1058 msgid "Identifies the node on which the page resides."
1062 #: build/C/man2/move_pages.2:109
1068 #: build/C/man2/move_pages.2:114
1070 "The page is mapped by multiple processes and can be moved only if "
1071 "B<MPOL_MF_MOVE_ALL> is specified."
1075 #: build/C/man2/move_pages.2:114
1081 #: build/C/man2/move_pages.2:120
1083 "The page is currently busy and cannot be moved. Try again later. This "
1084 "occurs if a page is undergoing I/O or another kernel subsystem is holding a "
1085 "reference to the page."
1089 #: build/C/man2/move_pages.2:120
1095 #: build/C/man2/move_pages.2:123
1096 msgid "This is a zero page or the memory area is not mapped by the process."
1100 #: build/C/man2/move_pages.2:123
1106 #: build/C/man2/move_pages.2:130
1108 "Unable to write back a page. The page has to be written back in order to "
1109 "move it since the page is dirty and the filesystem does not provide a "
1110 "migration function that would allow the move of dirty pages."
1114 #: build/C/man2/move_pages.2:130
1120 #: build/C/man2/move_pages.2:135
1122 "A dirty page cannot be moved. The filesystem does not provide a migration "
1123 "function and has no ability to write back pages."
1127 #: build/C/man2/move_pages.2:135
1133 #: build/C/man2/move_pages.2:138
1134 msgid "The page is not present."
1138 #: build/C/man2/move_pages.2:138
1144 #: build/C/man2/move_pages.2:141
1145 msgid "Unable to allocate memory on target node."
1148 #. FIXME Is the following quite true: does the wrapper in numactl
1149 #. do the right thing?
1151 #: build/C/man2/move_pages.2:150
1153 "On success B<move_pages>() returns zero. On error, it returns -1, and sets "
1154 "I<errno> to indicate the error."
1158 #: build/C/man2/move_pages.2:151
1164 #: build/C/man2/move_pages.2:154
1165 msgid "Too many pages to move."
1169 #: build/C/man2/move_pages.2:154
1174 #. FIXME Clarify "current cpuset". Is that the cpuset of the caller
1177 #: build/C/man2/move_pages.2:159
1178 msgid "One of the target nodes is not allowed by the current cpuset."
1182 #: build/C/man2/move_pages.2:162
1183 msgid "Parameter array could not be accessed."
1187 #: build/C/man2/move_pages.2:169
1189 "Flags other than B<MPOL_MF_MOVE> and B<MPOL_MF_MOVE_ALL> was specified or an "
1190 "attempt was made to migrate pages of a kernel thread."
1194 #: build/C/man2/move_pages.2:169
1200 #: build/C/man2/move_pages.2:172
1201 msgid "One of the target nodes is not online."
1205 #: build/C/man2/move_pages.2:172
1211 #: build/C/man2/move_pages.2:178
1213 "No pages were found that require moving. All pages are either already on "
1214 "the target node, not present, had an invalid address or could not be moved "
1215 "because they were mapped by multiple processes."
1219 #: build/C/man2/move_pages.2:187
1221 "The caller specified B<MPOL_MF_MOVE_ALL> without sufficient privileges "
1222 "(B<CAP_SYS_NICE>). Or, the caller attempted to move pages of a process "
1223 "belonging to another user but did not have privilege to do so "
1224 "(B<CAP_SYS_NICE>)."
1228 #: build/C/man2/move_pages.2:190
1229 msgid "Process does not exist."
1233 #: build/C/man2/move_pages.2:193
1234 msgid "B<move_pages>() first appeared on Linux in version 2.6.18."
1237 #. FIXME Clarify "current cpuset". Is that the cpuset of the caller
1240 #: build/C/man2/move_pages.2:209
1242 "Use B<get_mempolicy>(2) with the B<MPOL_F_MEMS_ALLOWED> flag to obtain the "
1243 "set of nodes that are allowed by the current cpuset. Note that this "
1244 "information is subject to change at any time by manual or automatic "
1245 "reconfiguration of the cpuset."
1249 #: build/C/man2/move_pages.2:219
1251 "Use of this function may result in pages whose location (node) violates the "
1252 "memory policy established for the specified addresses (See B<mbind>(2)) "
1253 "and/or the specified process (See B<set_mempolicy>(2)). That is, memory "
1254 "policy does not constrain the destination nodes used by B<move_pages>()."
1258 #: build/C/man7/numa.7:29
1264 #: build/C/man7/numa.7:29
1270 #: build/C/man7/numa.7:32
1271 msgid "numa - overview of Non-Uniform Memory Architecture"
1275 #: build/C/man7/numa.7:43
1277 "Non-Uniform Memory Access (NUMA) refers to multiprocessor systems whose "
1278 "memory is divided into multiple memory nodes. The access time of a memory "
1279 "node depends on the relative locations of the accessing CPU and the accessed "
1280 "node. (This contrasts with a symmetric multiprocessor system, where the "
1281 "access time for all of the memory is the same for all CPUs.) Normally, each "
1282 "CPU on a NUMA system has a local memory node whose contents can be accessed "
1283 "faster than the memory in the node local to another CPU or the memory on a "
1284 "bus shared by all CPUs."
1288 #: build/C/man7/numa.7:43
1290 msgid "NUMA system calls"
1294 #: build/C/man7/numa.7:54
1296 "The Linux kernel implements the following NUMA-related system calls: "
1297 "B<get_mempolicy>(2), B<mbind>(2), B<migrate_pages>(2), B<move_pages>(2), and "
1298 "B<set_mempolicy>(2). However, applications should normally use the "
1299 "interface provided by I<libnuma>; see \"Library Support\" below."
1303 #: build/C/man7/numa.7:54
1305 msgid "/proc/[number]/numa_maps (since Linux 2.6.14)"
1308 #. See also Changelog-2.6.14
1310 #: build/C/man7/numa.7:58
1312 "This file displays information about a process's NUMA memory policy and "
1317 #: build/C/man7/numa.7:62
1319 "Each line contains information about a memory range used by the process, "
1320 "displaying\\(emamong other information\\(emthe effective memory policy for "
1321 "that memory range and on which nodes the pages have been allocated."
1325 #: build/C/man7/numa.7:70
1327 "I<numa_maps> is a read-only file. When I</proc/E<lt>pidE<gt>/numa_maps> is "
1328 "read, the kernel will scan the virtual address space of the process and "
1329 "report how memory is used. One line is displayed for each unique memory "
1330 "range of the process."
1334 #: build/C/man7/numa.7:77
1336 "The first field of each line shows the starting address of the memory "
1337 "range. This field allows a correlation with the contents of the "
1338 "I</proc/E<lt>pidE<gt>/maps> file, which contains the end address of the "
1339 "range and other information, such as the access permissions and sharing."
1343 #: build/C/man7/numa.7:85
1345 "The second field shows the memory policy currently in effect for the memory "
1346 "range. Note that the effective policy is not necessarily the policy "
1347 "installed by the process for that memory range. Specifically, if the "
1348 "process installed a \"default\" policy for that range, the effective policy "
1349 "for that range will be the process policy, which may or may not be "
1354 #: build/C/man7/numa.7:88
1356 "The rest of the line contains information about the pages allocated in the "
1357 "memory range, as follows:"
1361 #: build/C/man7/numa.7:88
1363 msgid "I<NE<lt>nodeE<gt>=E<lt>nr_pagesE<gt>>"
1367 #: build/C/man7/numa.7:101
1369 "The number of pages allocated on I<E<lt>nodeE<gt>>. I<E<lt>nr_pagesE<gt>> "
1370 "includes only pages currently mapped by the process. Page migration and "
1371 "memory reclaim may have temporarily unmapped pages associated with this "
1372 "memory range. These pages may show up again only after the process has "
1373 "attempted to reference them. If the memory range represents a shared memory "
1374 "area or file mapping, other processes may currently have additional pages "
1375 "mapped in a corresponding memory range."
1379 #: build/C/man7/numa.7:101
1381 msgid "I<file=E<lt>filenameE<gt>>"
1385 #: build/C/man7/numa.7:107
1387 "The file backing the memory range. If the file is mapped as private, write "
1388 "accesses may have generated COW (Copy-On-Write) pages in this memory range. "
1389 "These pages are displayed as anonymous pages."
1393 #: build/C/man7/numa.7:107
1399 #: build/C/man7/numa.7:110
1400 msgid "Memory range is used for the heap."
1404 #: build/C/man7/numa.7:110
1410 #: build/C/man7/numa.7:113
1411 msgid "Memory range is used for the stack."
1415 #: build/C/man7/numa.7:113
1421 #: build/C/man7/numa.7:117
1423 "Huge memory range. The page counts shown are huge pages and not regular "
1428 #: build/C/man7/numa.7:117
1430 msgid "I<anon=E<lt>pagesE<gt>>"
1434 #: build/C/man7/numa.7:120
1435 msgid "The number of anonymous page in the range."
1439 #: build/C/man7/numa.7:120
1441 msgid "I<dirty=E<lt>pagesE<gt>>"
1445 #: build/C/man7/numa.7:123
1446 msgid "Number of dirty pages."
1450 #: build/C/man7/numa.7:123
1452 msgid "I<mapped=E<lt>pagesE<gt>>"
1456 #: build/C/man7/numa.7:130
1457 msgid "Total number of mapped pages, if different from I<dirty> and I<anon> pages."
1461 #: build/C/man7/numa.7:130
1463 msgid "I<mapmax=E<lt>countE<gt>>"
1467 #: build/C/man7/numa.7:136
1469 "Maximum mapcount (number of processes mapping a single page) encountered "
1470 "during the scan. This may be used as an indicator of the degree of sharing "
1471 "occurring in a given memory range."
1475 #: build/C/man7/numa.7:136
1477 msgid "I<swapcache=E<lt>countE<gt>>"
1481 #: build/C/man7/numa.7:139
1482 msgid "Number of pages that have an associated entry on a swap device."
1486 #: build/C/man7/numa.7:139
1488 msgid "I<active=E<lt>pagesE<gt>>"
1492 #: build/C/man7/numa.7:145
1494 "The number of pages on the active list. This field is shown only if "
1495 "different from the number of pages in this range. This means that some "
1496 "inactive pages exist in the memory range that may be removed from memory by "
1501 #: build/C/man7/numa.7:145
1503 msgid "I<writeback=E<lt>pagesE<gt>>"
1507 #: build/C/man7/numa.7:148
1508 msgid "Number of pages that are currently being written out to disk."
1512 #: build/C/man7/numa.7:150
1513 msgid "No standards govern NUMA interfaces."
1517 #: build/C/man7/numa.7:157
1519 "The Linux NUMA system calls and I</proc> interface are available only if the "
1520 "kernel was configured and built with the B<CONFIG_NUMA> option."
1524 #: build/C/man7/numa.7:157
1526 msgid "Library support"
1530 #: build/C/man7/numa.7:166
1532 "Link with I<-lnuma> to get the system call definitions. I<libnuma> and the "
1533 "required I<E<lt>numaif.hE<gt>> header are available in the I<numactl> "
1538 #: build/C/man7/numa.7:183
1540 "However, applications should not use these system calls directly. Instead, "
1541 "the higher level interface provided by the B<numa>(3) functions in the "
1542 "I<numactl> package is recommended. The I<numactl> package is available at "
1543 "E<.UR ftp://oss.sgi.com\\:/www\\:/projects\\:/libnuma\\:/download/> E<.UE .> "
1544 "The package is also included in some Linux distributions. Some "
1545 "distributions include the development library and header in the separate "
1546 "I<numactl-devel> package."
1550 #: build/C/man7/numa.7:191
1552 "B<get_mempolicy>(2), B<mbind>(2), B<move_pages>(2), B<set_mempolicy>(2), "
1553 "B<numa>(3), B<cpuset>(7), B<numactl>(8)"
1557 #: build/C/man2/set_mempolicy.2:27
1559 msgid "SET_MEMPOLICY"
1563 #: build/C/man2/set_mempolicy.2:30
1565 "set_mempolicy - set default NUMA memory policy for a process and its "
1570 #: build/C/man2/set_mempolicy.2:36
1573 "B<int set_mempolicy(int >I<mode>B<, unsigned long *>I<nodemask>B<,>\n"
1574 "B< unsigned long >I<maxnode>B<);>\n"
1578 #: build/C/man2/set_mempolicy.2:49
1580 "B<set_mempolicy>() sets the NUMA memory policy of the calling process, "
1581 "which consists of a policy mode and zero or more nodes, to the values "
1582 "specified by the I<mode>, I<nodemask> and I<maxnode> arguments."
1586 #: build/C/man2/set_mempolicy.2:75
1588 "This system call defines the default policy for the process. The process "
1589 "policy governs allocation of pages in the process's address space outside of "
1590 "memory ranges controlled by a more specific policy set by B<mbind>(2). The "
1591 "process default policy also controls allocation of any pages for memory "
1592 "mapped files mapped using the B<mmap>(2) call with the B<MAP_PRIVATE> flag "
1593 "and that are only read [loaded] from by the process and of memory mapped "
1594 "files mapped using the B<mmap>(2) call with the B<MAP_SHARED> flag, "
1595 "regardless of the access type. The policy is applied only when a new page "
1596 "is allocated for the process. For anonymous memory this is when the page is "
1597 "first touched by the application."
1601 #: build/C/man2/set_mempolicy.2:89
1603 "The I<mode> argument must specify one of B<MPOL_DEFAULT>, B<MPOL_BIND>, "
1604 "B<MPOL_INTERLEAVE> or B<MPOL_PREFERRED>. All modes except B<MPOL_DEFAULT> "
1605 "require the caller to specify via the I<nodemask> argument one or more "
1610 #: build/C/man2/set_mempolicy.2:97
1612 "The I<mode> argument may also include an optional I<mode flag>. The "
1613 "supported I<mode flags> are:"
1617 #: build/C/man2/set_mempolicy.2:97
1619 msgid "B<MPOL_F_STATIC_NODES> (since Linux 2.6.26)"
1623 #: build/C/man2/set_mempolicy.2:107
1625 "A nonempty I<nodemask> specifies physical node ids. Linux does will not "
1626 "remap the I<nodemask> when the process moves to a different cpuset context, "
1627 "nor when the set of nodes allowed by the process's current cpuset context "
1632 #: build/C/man2/set_mempolicy.2:107
1634 msgid "B<MPOL_F_RELATIVE_NODES> (since Linux 2.6.26)"
1638 #: build/C/man2/set_mempolicy.2:133
1640 "I<nodemask> points to a bit mask of node IDs that contains up to I<maxnode> "
1641 "bits. The bit mask size is rounded to the next multiple of "
1642 "I<sizeof(unsigned long)>, but the kernel will use bits only up to "
1643 "I<maxnode>. A NULL value of I<nodemask> or a I<maxnode> value of zero "
1644 "specifies the empty set of nodes. If the value of I<maxnode> is zero, the "
1645 "I<nodemask> argument is ignored."
1649 #: build/C/man2/set_mempolicy.2:154
1651 "Where a I<nodemask> is required, it must contain at least one node that is "
1652 "on-line, allowed by the process's current cpuset context, [unless the "
1653 "B<MPOL_F_STATIC_NODES> mode flag is specified], and contains memory. If the "
1654 "B<MPOL_F_STATIC_NODES> is set in I<mode> and a required I<nodemask> contains "
1655 "no nodes that are allowed by the process's current cpuset context, the "
1656 "memory policy reverts to I<local allocation>. This effectively overrides "
1657 "the specified policy until the process's cpuset context includes one or more "
1658 "of the nodes specified by I<nodemask>."
1662 #: build/C/man2/set_mempolicy.2:165
1664 "The B<MPOL_DEFAULT> mode specifies that any nondefault process memory policy "
1665 "be removed, so that the memory policy \"falls back\" to the system default "
1666 "policy. The system default policy is \"local allocation\"-- i.e., allocate "
1667 "memory on the node of the CPU that triggered the allocation. I<nodemask> "
1668 "must be specified as NULL. If the \"local node\" contains no free memory, "
1669 "the system will attempt to allocate memory from a \"near by\" node."
1673 #: build/C/man2/set_mempolicy.2:182
1675 "The B<MPOL_BIND> mode defines a strict policy that restricts memory "
1676 "allocation to the nodes specified in I<nodemask>. If I<nodemask> specifies "
1677 "more than one node, page allocations will come from the node with the lowest "
1678 "numeric node ID first, until that node contains no free memory. Allocations "
1679 "will then come from the node with the next highest node ID specified in "
1680 "I<nodemask> and so forth, until none of the specified nodes contain free "
1681 "memory. Pages will not be allocated from any node not specified in the "
1685 #. NOTE: the following sentence doesn't make sense in the context
1686 #. of set_mempolicy() -- no memory area specified.
1687 #. To be effective the memory area should be fairly large,
1688 #. at least 1MB or bigger.
1690 #: build/C/man2/set_mempolicy.2:196
1692 "B<MPOL_INTERLEAVE> interleaves page allocations across the nodes specified "
1693 "in I<nodemask> in numeric node ID order. This optimizes for bandwidth "
1694 "instead of latency by spreading out pages and memory accesses to those pages "
1695 "across multiple nodes. However, accesses to a single page will still be "
1696 "limited to the memory bandwidth of a single node."
1700 #: build/C/man2/set_mempolicy.2:213
1702 "B<MPOL_PREFERRED> sets the preferred node for allocation. The kernel will "
1703 "try to allocate pages from this node first and fall back to \"near by\" "
1704 "nodes if the preferred node is low on free memory. If I<nodemask> specifies "
1705 "more than one node ID, the first node in the mask will be selected as the "
1706 "preferred node. If the I<nodemask> and I<maxnode> arguments specify the "
1707 "empty set, then the policy specifies \"local allocation\" (like the system "
1708 "default policy discussed above)."
1712 #: build/C/man2/set_mempolicy.2:220
1714 "The process memory policy is preserved across an B<execve>(2), and is "
1715 "inherited by child processes created using B<fork>(2) or B<clone>(2)."
1719 #: build/C/man2/set_mempolicy.2:227
1721 "On success, B<set_mempolicy>() returns 0; on error, -1 is returned and "
1722 "I<errno> is set to indicate the error."
1726 #: build/C/man2/set_mempolicy.2:272
1728 "I<mode> is invalid. Or, I<mode> is B<MPOL_DEFAULT> and I<nodemask> is "
1729 "nonempty, or I<mode> is B<MPOL_BIND> or B<MPOL_INTERLEAVE> and I<nodemask> "
1730 "is empty. Or, I<maxnode> specifies more than a page worth of bits. Or, "
1731 "I<nodemask> specifies one or more node IDs that are greater than the maximum "
1732 "supported node ID. Or, none of the node IDs specified by I<nodemask> are "
1733 "on-line and allowed by the process's current cpuset context, or none of the "
1734 "specified nodes contain memory. Or, the I<mode> argument specified both "
1735 "B<MPOL_F_STATIC_NODES> and B<MPOL_F_RELATIVE_NODES>."
1739 #: build/C/man2/set_mempolicy.2:279
1741 "The B<set_mempolicy>(), system call was added to the Linux kernel in version "
1746 #: build/C/man2/set_mempolicy.2:286
1748 "Process policy is not remembered if the page is swapped out. When such a "
1749 "page is paged back in, it will use the policy of the process or memory range "
1750 "that is in effect at the time the page is allocated."
1754 #: build/C/man2/set_mempolicy.2:298
1756 "B<get_mempolicy>(2), B<getcpu>(2), B<mbind>(2), B<mmap>(2), B<numa>(3), "
1757 "B<cpuset>(7), B<numa>(7), B<numactl>(8)"