OSDN Git Service

(split) LDP: Update the version to 3.53 in PO files
[linuxjm/LDP_man-pages.git] / draft / man2 / mbind.2
index 4ae26cd..3e3dad6 100644 (file)
@@ -1,6 +1,7 @@
 .\" Copyright 2003,2004 Andi Kleen, SuSE Labs.
 .\" and Copyright 2007 Lee Schermerhorn, Hewlett Packard
 .\"
+.\" %%%LICENSE_START(VERBATIM_PROF)
 .\" Permission is granted to make and distribute verbatim copies of this
 .\" manual provided the copyright notice and this permission notice are
 .\" preserved on all copies.
 .\"
 .\" Formatted or processed versions of this manual, if unaccompanied by
 .\" the source, must acknowledge the copyright and authors of this work.
+.\" %%%LICENSE_END
 .\"
 .\" 2006-02-03, mtk, substantial wording changes and other improvements
 .\" 2007-08-27, Lee Schermerhorn <Lee.Schermerhorn@hp.com>
 .\"    more precise specification of behavior.
 .\"
-.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI
-.\"         all rights reserved.
-.\" Translated 2006-07-25, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
-.\" Updated 2008-08-21, Akihiro MOTOKI, LDP v3.07
-.\" Updated 2008-09-19, Akihiro MOTOKI, LDP v3.08
+.\" FIXME
+.\" Linux 3.8 added the following, which need to be documented.
+.\" And do they also apply for move_pages()?
 .\"
-.TH MBIND 2 2008-08-15 Linux "Linux Programmer's Manual"
-.\"O .SH NAME
-.SH Ì¾Á°
-.\"O mbind \- Set memory policy for a memory range
-mbind \- ¥á¥â¥êÎΰè¤ËÂФ·¤Æ¥á¥â¥ê¥Ý¥ê¥·¡¼¤òÀßÄꤹ¤ë
-.\"O .SH SYNOPSIS
-.SH ½ñ¼°
+.\"       MPOL_LOCAL
+.\"                commit 479e2802d09f1e18a97262c4c6f8f17ae5884bd8
+.\"                Author: Peter Zijlstra <a.p.zijlstra@chello.nl>
+.\"                Date:   Thu Oct 25 14:16:28 2012 +0200
+.\"
+.\"                commit f2a07f40dbc603c15f8b06e6ec7f768af67b424f
+.\"                Author: Hugh Dickins <hughd@google.com>
+.\"                Date:   Wed Jan 2 02:01:33 2013 -0800
+.\"
+.\"        MPOL_MF_LAZY
+.\"                commit b24f53a0bea38b266d219ee651b22dba727c44ae
+.\"                Author: Lee Schermerhorn <lee.schermerhorn@hp.com>
+.\"                Date:   Thu Oct 25 14:16:32 2012 +0200
+.\"
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH MBIND 2 2008\-08\-15 Linux "Linux Programmer's Manual"
+.SH 名前
+mbind \- メモリ領域に対してメモリポリシーを設定する
+.SH 書式
 .nf
-.B "#include <numaif.h>"
+\fB#include <numaif.h>\fP
 .sp
-.BI "int mbind(void *" addr ", unsigned long " len  ", int " mode ,
-.BI "          unsigned long *" nodemask  ", unsigned long " maxnode ,
-.BI "          unsigned " flags );
+\fBint mbind(void *\fP\fIaddr\fP\fB, unsigned long \fP\fIlen\fP\fB, int \fP\fImode\fP\fB,\fP
+\fB          unsigned long *\fP\fInodemask\fP\fB, unsigned long \fP\fImaxnode\fP\fB,\fP
+\fB          unsigned \fP\fIflags\fP\fB);\fP
 .sp
-.\"O Link with \fI\-lnuma\fP.
-\fI\-lnuma\fP ¤Ç¥ê¥ó¥¯¤¹¤ë¡£
+\fI\-lnuma\fP でリンクする。
 .fi
-.\"O .SH DESCRIPTION
-.SH ÀâÌÀ
-.\"O .BR mbind ()
-.\"O sets the NUMA memory policy,
-.\"O which consists of a policy mode and zero or more nodes,
-.\"O for the memory range starting with
-.\"O .I addr
-.\"O and continuing for
-.\"O .I len
-.\"O bytes.
-.BR mbind ()
-¤Ï¡¢
-.I addr
-¤«¤é»Ï¤Þ¤ëŤµ
-.I len
-¥Ð¥¤¥È¤ÎÈϰϤΥá¥â¥ê¤Ë NUMA ¥á¥â¥ê¥Ý¥ê¥·¡¼¤òÀßÄꤹ¤ë¡£
-NUMA ¥Ý¥ê¥·¡¼¤Ï¥Ý¥ê¥·¡¼¥â¡¼¥É¤È 0 ¸Ä°Ê¾å¤Î¥Î¡¼¥É¤«¤é¹½À®¤µ¤ì¤ë¡£
-.\"O The memory policy defines from which node memory is allocated.
-¥á¥â¥ê¥Ý¥ê¥·¡¼¤Ï¤É¤Î¥Î¡¼¥É¤«¤é¥á¥â¥ê¤ò³ä¤êÅö¤Æ¤ë¤«¤ò·èÄꤹ¤ë¡£
-
-.\"O If the memory range specified by the
-.\"O .IR addr " and " len
-.\"O arguments includes an "anonymous" region of memory\(emthat is
-.\"O a region of memory created using the
-.\"O .BR mmap (2)
-.\"O system call with the
-.\"O .BR MAP_ANONYMOUS \(emor
-.\"O a memory mapped file, mapped using the
-.\"O .BR mmap (2)
-.\"O system call with the
-.\"O .B MAP_PRIVATE
-.\"O flag, pages will only be allocated according to the specified
-.\"O policy when the application writes [stores] to the page.
-.I addr
-¤È
-.I len
-¤Ç»ØÄꤵ¤ì¤¿¥á¥â¥êÈϰϤˡ¢
-¥á¥â¥ê¤Î¡Ö̵̾¡×Îΰè \(em
-.B MAP_ANONYMOUS
-ÉÕ¤­¤Î
-.BR mmap (2)
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤Ã¤ÆºîÀ®¤µ¤ì¤¿¥á¥â¥êÎΰè \(em ¤ä
-.B MAP_PRIVATE
-ÉÕ¤­¤Î
-.BR mmap (2)
-¤ò»È¤Ã¤Æ¥Þ¥Ã¥×¤µ¤ì¤¿¥á¥â¥ê¥Þ¥Ã¥×¡¦¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢
-¥Ú¡¼¥¸¤¬»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ë´ð¤Å¤¤¤Æ³ä¤êÅö¤Æ¤é¤ì¤ë¤Î¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó
-¤¬¤½¤Î¥Ú¡¼¥¸¤Ø¤Î½ñ¤­¹þ¤ß (¥Ç¡¼¥¿¤Î³ÊǼ) ¤ò¹Ô¤Ã¤¿»þ¤À¤±¤Ç¤¢¤ë¡£
-.\"O For anonymous regions, an initial read access will use a shared
-.\"O page in the kernel containing all zeros.
-.\"O For a file mapped with
-.\"O .BR MAP_PRIVATE ,
-.\"O an initial read access will allocate pages according to the
-.\"O process policy of the process that causes the page to be allocated.
-.\"O This may not be the process that called
-.\"O .BR mbind ().
-̵̾Îΰè¤Î¾ì¹ç¡¢ºÇ½é¤ÎÆɤ߽Ф·¥¢¥¯¥»¥¹¤ÎºÝ¤Ë¤Ï
-¥«¡¼¥Í¥ëÆâ¤ÎÁ´¥Ç¡¼¥¿¤¬ 0 ¤Ç¤¢¤ë¶¦Í­¥Ú¡¼¥¸¤¬»ÈÍѤµ¤ì¤ë¡£
-.B MAP_PRIVATE
-¤Ç¥Þ¥Ã¥×¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î¾ì¹ç¡¢ºÇ½é¤ÎÆɤ߽Ф·¥¢¥¯¥»¥¹¤¬¤¢¤ë¤È¡¢
-¥Ú¡¼¥¸³ä¤êÅö¤Æ¤¬È¯À¸¤¹¤ë¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¥×¥í¥»¥¹¤Î¥Ç¥Õ¥©¥ë¥È¥Ý¥ê¥·¡¼
-¤Ë¤·¤¿¤¬¤Ã¤Æ¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤¬¹Ô¤ï¤ì¤ë¡£
-¥Ú¡¼¥¸³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¥×¥í¥»¥¹¤Ï¡¢
-.BR mbind ()
-¤ò¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤ÈƱ¤¸¤È¤Ï¸Â¤é¤Ê¤¤¡£
-
-.\"O The specified policy will be ignored for any
-.\"O .B MAP_SHARED
-.\"O mappings in the specified memory range.
-.\"O Rather the pages will be allocated according to the process policy
-.\"O of the process that caused the page to be allocated.
-.\"O Again, this may not be the process that called
-.\"O .BR mbind ().
-»ØÄꤵ¤ì¤¿¥á¥â¥êÈÏ°ÏÆâ¤Ë¤¢¤ë
-.B MAP_SHARED
-¤Î¥Þ¥Ã¥Ô¥ó¥°¤Ç¤Ï»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ï̵»ë¤µ¤ì¡¢
-¥Ú¡¼¥¸³ä¤êÅö¤Æ¤¬È¯À¸¤¹¤ë¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¥×¥í¥»¥¹¤Î¥Ç¥Õ¥©¥ë¥È¥Ý¥ê¥·¡¼¤Ë
-¤·¤¿¤¬¤Ã¤Æ¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤¬¹Ô¤ï¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£
-·«¤êÊÖ¤·¤Ë¤Ê¤ë¤¬¡¢¥Ú¡¼¥¸³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¥×¥í¥»¥¹¤Ï¡¢
-.BR mbind ()
-¤ò¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤ÈƱ¤¸¤È¤Ï¸Â¤é¤Ê¤¤¡£
-
-.\"O If the specified memory range includes a shared memory region
-.\"O created using the
-.\"O .BR shmget (2)
-.\"O system call and attached using the
-.\"O .BR shmat (2)
-.\"O system call,
-.\"O pages allocated for the anonymous or shared memory region will
-.\"O be allocated according to the policy specified, regardless which
-.\"O process attached to the shared memory segment causes the allocation.
-.\"Omotoki: Ìõ¤Ë¾¯¤·¤À¤±¼«¿®¤¬¤Ê¤¤¡£
-»ØÄꤵ¤ì¤¿¥á¥â¥êÈϰϤˡ¢
-.BR shmget (2)
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤Ã¤ÆºîÀ®¤µ¤ì¤¿¤ê¡¢
-.BR shmat (2)
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤Ã¤ÆÉղà(attach) ¤µ¤ì¤¿¤ê¤·¤¿¶¦Í­¥á¥â¥êÎΰ褬
-´Þ¤Þ¤ì¤ë¾ì¹ç¡¢ÌµÌ¾¥á¥â¥êÎΰè¤ä¶¦Í­¥á¥â¥êÎΰè¤ËÂФ¹¤ë¥Ú¡¼¥¸³ä¤êÅö¤Æ¤Ï¡¢
-¶¦Í­¥á¥â¥ê¥»¥°¥á¥ó¥È¤Ø¥Ý¥ê¥·¡¼¤ÎÀßÄê¤ò¹Ô¤Ã¤¿¥×¥í¥»¥¹¤¬¥Ú¡¼¥¸³ä¤êÅö¤Æ
-¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¤«¤Ë´Ø¤ï¤é¤º¡¢»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ë¤·¤¿¤¬¤Ã¤Æ³ä¤êÅö¤Æ
-¤¬¹Ô¤ï¤ì¤ë¡£
-.\"O If, however, the shared memory region was created with the
-.\"O .B SHM_HUGETLB
-.\"O flag,
-.\"O the huge pages will be allocated according to the policy specified
-.\"O only if the page allocation is caused by the process that calls
-.\"O .BR mbind ()
-.\"O for that region.
-¤·¤«¤·¤Ê¤¬¤é¡¢¶¦Í­¥á¥â¥êÎΰ褬
-.B SHM_HUGETLB
-¥Õ¥é¥°¤ò»ØÄꤷ¤ÆºîÀ®¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢¥Ò¥å¡¼¥¸¥Ú¡¼¥¸ (huge page) ¤Î³ä¤êÅö¤Æ¤¬
-»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ë¤·¤¿¤¬¤Ã¤Æ¹Ô¤ï¤ì¤ë¤Î¤Ï¡¢¤½¤ÎÎΰè¤ËÂФ·¤Æ
-.BR mbind ()
-¤ò¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥Ú¡¼¥¸³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¾ì¹ç¤Î¤ß¤Ç¤¢¤ë¡£
-
-.\"O By default,
-.\"O .BR mbind ()
-.\"O only has an effect for new allocations; if the pages inside
-.\"O the range have been already touched before setting the policy,
-.\"O then the policy has no effect.
-¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢
-.BR mbind ()
-¤Ï¿·µ¬¤Î¥á¥â¥ê³ä¤êÅö¤Æ¤ËÂФ·¤Æ¤Î¤ß¸ú²Ì¤ò»ý¤Ä¡£
-¥Ý¥ê¥·¡¼¤¬ÀßÄꤵ¤ì¤ëÁ°¤Ë¤¹¤Ç¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ëÈÏ°ÏÆâ¤Î¥Ú¡¼¥¸¤ËÂФ·¤Æ¤Ï¡¢
-¥Ý¥ê¥·¡¼¤Ï±Æ¶Á¤·¤Ê¤¤¡£
-.\"O This default behavior may be overridden by the
-.\"O .B MPOL_MF_MOVE
-.\"O and
-.\"O .B MPOL_MF_MOVE_ALL
-.\"O flags described below.
-¤³¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤Ï¡¢°Ê²¼¤ÇÀâÌÀ¤¹¤ë¥Õ¥é¥°
-.B MPOL_MF_MOVE
-¤ä
-.B MPOL_MF_MOVE_ALL
-¤Ë¤è¤ê¾å½ñ¤­¤µ¤ì¤ë²ÄǽÀ­¤¬¤¢¤ë¡£
-
-.\"O The
-.\"O .I mode
-.\"O argument must specify one of
-.\"O .BR MPOL_DEFAULT ,
-.\"O .BR MPOL_BIND ,
-.\"O .B MPOL_INTERLEAVE
-.\"O or
-.\"O .BR MPOL_PREFERRED .
-.\"O All policy modes except
-.\"O .B MPOL_DEFAULT
-.\"O require the caller to specify via the
-.\"O .I nodemask
-.\"O argument,
-.\"O the node or nodes to which the mode applies.
-.I mode
-°ú¤­¿ô¤Ë¤Ï¡¢
-.BR MPOL_DEFAULT ,
-.BR MPOL_BIND ,
-.BR MPOL_INTERLEAVE ,
-.B MPOL_PREFERRED
-¤Î¤¤¤º¤ì¤«°ì¤Ä¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-.B MPOL_DEFAULT
-°Ê³°¤Î¥Ý¥ê¥·¡¼¥â¡¼¥É¤Î¾ì¹ç¡¢¸Æ¤Ó½Ð¤·¸µ¤Ï
-.I nodemask
-°ú¤­¿ô¤Ç¤½¤Î¥Ý¥ê¥·¡¼¥â¡¼¥É¤òŬÍѤ¹¤ë¥Î¡¼¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£
-
-.\"O The
-.\"O .I mode
-.\"O argument may also include an optional
-.\"O .IR "mode flag ".
-.\"O The supported
-.\"O .I "mode flags"
-.\"O are:
-.I mode
-°ú¤­¿ô¤Ë¤Ï¡¢ÄɲäÇ
-.I "¥â¡¼¥É¥Õ¥é¥°"
-¤ò´Þ¤á¤ë¤³¤È¤â¤Ç¤­¤ë¡£
-¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë
-.I "¥â¡¼¥É¥Õ¥é¥°"
-¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë¡£
-.TP
-.\"O .BR MPOL_F_STATIC_NODES " (since Linux-2.6.26)"
-.BR MPOL_F_STATIC_NODES " (Linux-2.6.26 °Ê¹ß)"
-.\"O A nonempty
-.\"O .I nodemask
-.\"O specifies physical node ids.
-.\"O Linux does not remap the
-.\"O .I nodemask
-.\"O when the process moves to a different cpuset context,
-.\"O nor when the set of nodes allowed by the process's
-.\"O current cpuset context changes.
-¶õ¤Ç¤Ê¤¤
-.I nodemask
-¤Ï¡¢ÊªÍý¥Î¡¼¥É ID ¤Ç¤¢¤ë¡£
-Linux ¤Ç¤Ï¡¢¤½¤Î¥×¥í¥»¥¹¤¬°Û¤Ê¤ë CPU ½¸¹ç¥³¥ó¥Æ¥­¥¹¥È (cpuset context)
-¤Ë°ÜÆ°¤·¤¿¾ì¹ç¤Ç¤â¡¢¤½¤Î¥×¥í¥»¥¹¤Î¸½ºß¤Î CPU ½¸¹ç¥³¥ó¥Æ¥­¥¹¥È¤Ç
-µö²Ä¤µ¤ì¤Æ¤¤¤ë¥Î¡¼¥É½¸¹ç¤¬ÊѲ½¤·¤¿¾ì¹ç¤Ç¤â¡¢
-.I nodemask
-¤ò¥Þ¥Ã¥Ô¥ó¥°¤·Ä¾¤¹¤³¤È¤Ï¤Ê¤¤¡£
-.TP
-.\"O .BR MPOL_F_RELATIVE_NODES " (since Linux-2.6.26)"
-.BR MPOL_F_RELATIVE_NODES " (Linux-2.6.26 °Ê¹ß)"
-.\"O A nonempty
-.\"O .I nodemask
-.\"O specifies node ids that are relative to the set of
-.\"O node ids allowed  by the process's current cpuset.
-¶õ¤Ç¤Ê¤¤
-.I nodemask
-¤Ï¡¢¤½¤Î¥×¥í¥»¥¹¤Î¸½ºß¤Î CPU ½¸¹ç¤Çµö²Ä¤µ¤ì¤Æ¤¤¤ë¥Î¡¼¥É ID ½¸¹ç
-¤Ë¤ª¤±¤ëÁêÂÐŪ¤Ê¥Î¡¼¥É ID ¤Ç¤¢¤ë¡£
+.SH 説明
+\fBmbind\fP()  は、 \fIaddr\fP から始まる長さ \fIlen\fP バイトの範囲のメモリに NUMA メモリポリシーを設定する。 NUMA
+ポリシーはポリシーモードと 0 個以上のノードから構成される。 メモリポリシーはどのノードからメモリを割り当てるかを決定する。
+
+\fIaddr\fP と \fIlen\fP で指定されたメモリ範囲に、 メモリの「無名」領域 \(em \fBMAP_ANONYMOUS\fP 付きの
+\fBmmap\fP(2)  システムコールを使って作成されたメモリ領域 \(em や \fBMAP_PRIVATE\fP 付きの \fBmmap\fP(2)
+を使ってマップされたメモリマップ・ファイルが含まれている場合、アプリケーションがそのページへの書き込み (データの格納)
+を行った時には指定されたポリシーのみに基づいてページが割り当てられる。無名領域の場合、最初の読み出しアクセスの際には カーネル内の全データが 0
+である共有ページが使用される。 \fBMAP_PRIVATE\fP でマップされたファイルの場合、最初の読み出しアクセスがあると、
+ページ割り当てが発生するきっかけとなったプロセスのデフォルトポリシー にしたがってページの割り当てが行われる。
+ページ割り当てのきっかけとなったプロセスは、 \fBmbind\fP()  を呼び出したプロセスと同じとは限らない。
+
+指定されたメモリ範囲内にある \fBMAP_SHARED\fP のマッピングでは指定されたポリシーは無視され、
+ページ割り当てが発生するきっかけとなったプロセスのデフォルトポリシーに したがってページの割り当てが行われることになる。
+繰り返しになるが、ページ割り当てのきっかけとなったプロセスは、 \fBmbind\fP()  を呼び出したプロセスと同じとは限らない。
+
+指定されたメモリ範囲に、 \fBshmget\fP(2)  システムコールを使って作成されたり、 \fBshmat\fP(2)  システムコールを使って付加
+(attach) されたりした共有メモリ領域が 含まれる場合、無名メモリ領域や共有メモリ領域に対するページ割り当ては、
+共有メモリセグメントへポリシーの設定を行ったプロセスがページ割り当て のきっかけとなったかに関わらず、指定されたポリシーにしたがって割り当て
+が行われる。 しかしながら、共有メモリ領域が \fBSHM_HUGETLB\fP フラグを指定して作成された場合には、ヒュージページ (huge page)
+の割り当てが 指定されたポリシーにしたがって行われるのは、その領域に対して \fBmbind\fP()
+を呼び出したプロセスがページ割り当てのきっかけとなった場合のみである。
+
+デフォルトでは、 \fBmbind\fP()  は新規のメモリ割り当てに対してのみ効果を持つ。
+ポリシーが設定される前にすでに使用されている範囲内のページに対しては、 ポリシーは影響しない。 このデフォルトの動作は、以下で説明するフラグ
+\fBMPOL_MF_MOVE\fP や \fBMPOL_MF_MOVE_ALL\fP により上書きされる可能性がある。
+
+\fImode\fP 引き数には、 \fBMPOL_DEFAULT\fP, \fBMPOL_BIND\fP, \fBMPOL_INTERLEAVE\fP,
+\fBMPOL_PREFERRED\fP のいずれか一つを指定しなければならない。 \fBMPOL_DEFAULT\fP 以外のポリシーモードの場合、呼び出し元は
+\fInodemask\fP 引き数でそのポリシーモードを適用するノードを指定する必要がある。
+
+\fImode\fP 引き数には、追加で \fIモードフラグ\fP を含めることもできる。 サポートされている \fIモードフラグ\fP は以下の通りである。
+.TP 
+\fBMPOL_F_STATIC_NODES\fP (Linux\-2.6.26 以降)
+空でない \fInodemask\fP は、物理ノード ID である。 Linux では、そのプロセスが異なる CPU 集合コンテキスト (cpuset
+context)  に移動した場合でも、そのプロセスの現在の CPU 集合コンテキストで 許可されているノード集合が変化した場合でも、
+\fInodemask\fP をマッピングし直すことはない。
+.TP 
+\fBMPOL_F_RELATIVE_NODES\fP (Linux\-2.6.26 以降)
+空でない \fInodemask\fP は、そのプロセスの現在の CPU 集合で許可されているノード ID 集合 における相対的なノード ID である。
 .PP
-.\"O .I nodemask
-.\"O points to a bitmask of nodes containing up to
-.\"O .I maxnode
-.\"O bits.
-.\"O The bit mask size is rounded to the next multiple of
-.\"O .IR "sizeof(unsigned long)" ,
-.\"O but the kernel will only use bits up to
-.\"O .IR maxnode .
-.I nodemask
-¤Ï¡¢ºÇÂç¤Ç
-.I maxnode
-¥Ó¥Ã¥È¤«¤é¹½À®¤µ¤ì¤ë¥Î¡¼¥É¤Î¥Ó¥Ã¥È¥Þ¥¹¥¯¤ò»Ø¤¹¡£
-¥Ó¥Ã¥È¥Þ¥¹¥¯¤ÎÂ礭¤µ¤Ï¡¢Ä¾¶á¤Î
-.I sizeof(unsigned long)
-¤ÎÇÜ¿ô¤ËÀÚ¤ê¾å¤²¤é¤ì¤ë¤¬¡¢¥«¡¼¥Í¥ë¤¬»ÈÍѤ¹¤ë¤Î¤Ï
-.I maxnode
-¸Ä¤Þ¤Ç¤Î¥Ó¥Ã¥È¤À¤±¤Ç¤¢¤ë¡£
-.\"O A NULL value of
-.\"O .I nodemask
-.\"O or a
-.\"O .I maxnode
-.\"O value of zero specifies the empty set of nodes.
-.\"O If the value of
-.\"O .I maxnode
-.\"O is zero,
-.\"O the
-.\"O .I nodemask
-.\"O argument is ignored.
-NULL ÃͤÎ
-.I nodemask
-¤â¤·¤¯¤ÏÃͤ¬ 0 ¤Î
-.I maxnode
-¤Ï¥Î¡¼¥É¤Î¶õ½¸¹ç¤òɽ¤¹¡£
-.I maxnode
-¤ÎÃͤ¬ 0 ¤Î¾ì¹ç¡¢
-.I nodemask
-°ú¤­¿ô¤Ï̵»ë¤µ¤ì¤ë¡£
-.\"O Where a
-.\"O .I nodemask
-.\"O is required, it must contain at least one node that is on-line,
-.\"O allowed by the process's current cpuset context
-.\"O [unless the
-.\"O .B MPOL_F_STATIC_NODES
-.\"O mode flag is specified],
-.\"O and contains memory.
-.I nodemask
-¤¬É¬¿Ü¤Î¾ìÌ̤Ǥϡ¢
-.I nodemask
-¤Ë¡¢¥ª¥ó¥é¥¤¥ó¤Ç¡¢¤½¤Î¥×¥í¥»¥¹¤Î¸½ºß¤Î CPU ½¸¹ç¥³¥ó¥Æ¥­¥¹¥È¤Ç
-µö²Ä¤µ¤ì¤Æ¤ª¤ê
-.RB ( MPOL_F_STATIC_NODES
-¥â¡¼¥É¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç)¡¢¥á¥â¥ê¤¬¤¢¤ë¥Î¡¼¥É¤¬
-¾¯¤Ê¤¯¤È¤â°ì¤ÄÆþ¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-
-.\"O The
-.\"O .B MPOL_DEFAULT
-.\"O mode requests that any nondefault policy be removed,
-.\"O restoring default behavior.
-¥â¡¼¥É
-.B MPOL_DEFAULT
-¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¤Ê¤¤¥×¥í¥»¥¹¤Î¥á¥â¥ê¥Ý¥ê¥·¡¼¤òºï½ü¤·¡¢
-¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤ËÌ᤹¤³¤È¤ò»ØÄꤹ¤ë¤â¤Î¤Ç¤¢¤ë¡£
-.\"O When applied to a range of memory via
-.\"O .BR mbind (),
-.\"O this means to use the process policy,
-.\"O which may have been set with
-.\"O .BR set_mempolicy (2).
-.BR mbind ()
-·Ðͳ¤Ç¡¢¤¢¤ë¥á¥â¥êÎΰè¤ËÂФ·¤Æ
-.B MPOL_DEFAULT
-¤¬Å¬ÍѤµ¤ì¤¿¾ì¹ç¡¢¥×¥í¥»¥¹¤Î¥Ç¥Õ¥©¥ë¥È¥Ý¥ê¥·¡¼¤ò»ÈÍѤ¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
-¥×¥í¥»¥¹¤Î¥Ç¥Õ¥©¥ë¥È¥Ý¥ê¥·¡¼¤Ï¡¢
-.BR set_mempolicy (2)
-¤ÇÊѹ¹¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£
-.\"O If the mode of the process policy is also
-.\"O .BR MPOL_DEFAULT ,
-.\"O the system-wide default policy will be used.
-¥×¥í¥»¥¹¤Î¥Ý¥ê¥·¡¼¤Î¥â¡¼¥É¤â
-.B MPOL_DEFAULT
-¤Î¾ì¹ç¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥǥե©¥ë¥È¥Ý¥ê¥·¡¼¤¬»ÈÍѤµ¤ì¤ë¡£
-.\"O The system-wide default policy allocates
-.\"O pages on the node of the CPU that triggers the allocation.
-.\"O For
-.\"O .BR MPOL_DEFAULT ,
-.\"O the
-.\"O .I nodemask
-.\"O and
-.\"O .I maxnode
-.\"O arguments must be specify the empty set of nodes.
-¥·¥¹¥Æ¥àÁ´ÂΤΥǥե©¥ë¥È¥Ý¥ê¥·¡¼¤Ç¤Ï¡¢³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿
-CPU ¤Î¥Î¡¼¥É¤«¤é¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤ò¹Ô¤¦¡£
-.B MPOL_DEFAULT
-¤Ç¤Ï¡¢°ú¤­¿ô
-.I nodemask
-¤È
-.I maxnode
-¤Ë¥Î¡¼¥É¤Î¶õ½¸¹ç¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-
-.\"O The
-.\"O .B MPOL_BIND
-.\"O mode specifies a strict policy that restricts memory allocation to
-.\"O the nodes specified in
-.\"O .IR nodemask .
-.\"O If
-.\"O .I nodemask
-.\"O specifies more than one node, page allocations will come from
-.\"O the node with the lowest numeric node ID first, until that node
-.\"O contains no free memory.
-.\"O Allocations will then come from the node with the next highest
-.\"O node ID specified in
-.\"O .I nodemask
-.\"O and so forth, until none of the specified nodes contain free memory.
-.\"O Pages will not be allocated from any node not specified in the
-.\"O .IR nodemask .
-.B MPOL_BIND
-¤Ï¸·¤·¤¤¥Ý¥ê¥·¡¼¤Ç¡¢¥á¥â¥ê³ä¤êÅö¤Æ¤Ï
-.I nodemask
-¤Ë»ØÄꤵ¤ì¤¿¥Î¡¼¥É¤Ë¸ÂÄꤵ¤ì¤ë¡£
-¾¤Î¥Î¡¼¥É¤Ø¤Î³ä¤êÅö¤Æ¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£
-.I nodemask
-¤Ë 2 ¸Ä°Ê¾å¤Î¥Î¡¼¥É¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤Ï
-¥Î¡¼¥É ID ¤¬¿ô»ú¤È¤·¤ÆºÇ¾®¤Î¥Î¡¼¥É¤«¤é³«»Ï¤µ¤ì¡¢
-¤½¤Î¥Î¡¼¥É¤Ë¶õ¤­¥á¥â¥ê¤¬¤Ê¤¯¤Ê¤ë¤Þ¤Ç¤½¤Î¥Î¡¼¥É¤«¤é
-¥Ú¡¼¥¸³ä¤êÅö¤Æ¤¬¹Ô¤ï¤ì¤ë¡£¤½¤Î¥Î¡¼¥É¤Ë¶õ¤­¥á¥â¥ê¤¬¤Ê¤¯¤Ê¤Ã¤¿¤é¡¢
-.\"motoki: the next highest ¤Ï the next lowest ¤Î´Ö°ã¤¤¡©
-¼¡¤Ë¾®¤µ¤Ê¥Î¡¼¥É ID ¤ò»ý¤Ä¥Î¡¼¥É¤«¤é¥Ú¡¼¥¸³ä¤êÅö¤Æ¤¬¹Ô¤ï¤ì¤ë¡£
-¤³¤ì¤ò¡¢
-.I nodemask
-¤Ç»ØÄꤵ¤ì¤¿Á´¤Æ¤Î¥Î¡¼¥É¤Ç¶õ¤­¥á¥â¥ê¤¬¤Ê¤¯¤Ê¤ë¤Þ¤Ç·«¤êÊÖ¤¹¡£
-.I nodemask
-¤Ç»ØÄꤵ¤ì¤¿°Ê³°¤Î¥Î¡¼¥É¤«¤é¤Ï¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£
-
-.\"O The
-.\"O .B MPOL_INTERLEAVE
-.\"O mode specifies that page allocations be interleaved across the
-.\"O set of nodes specified in
-.\"O .IR nodemask .
-.\"O This optimizes for bandwidth instead of latency
-.\"O by spreading out pages and memory accesses to those pages across
-.\"O multiple nodes.
-.\"O To be effective the memory area should be fairly large,
-.\"O at least 1MB or bigger with a fairly uniform access pattern.
-.\"O Accesses to a single page of the area will still be limited to
-.\"O the memory bandwidth of a single node.
-.B MPOL_INTERLEAVE
-¤Ï¡¢¥á¥â¥ê³ä¤êÅö¤Æ¤¬
-.I nodemask
-¤Ë»ØÄꤵ¤ì¤¿¥Î¡¼¥É´Ö¤Ç¸ò¸ß¤Ë¹Ô¤ï¤ì¤ë¤³¤È¤ò»ØÄꤹ¤ë¤â¤Î¤Ç¤¢¤ë¡£
-¤³¤Î¥Ý¥ê¥·¡¼¤Ç¤Ï¡¢Ê£¿ô¤Î¥Î¡¼¥É¤Ë¥Ú¡¼¥¸¤ò¹­¤²¤ÆÇÛÃÖ¤·¡¢¤³¤ì¤é¤Î¥Ú¡¼¥¸¤Ø¤Î
-¥á¥â¥ê¥¢¥¯¥»¥¹¤òʬ»¶¤¹¤ë¤³¤È¤Ç¡¢ÃÙ±ä¤Ç¤Ï¤Ê¤¯¡¢ÂÓ°è¤òºÇŬ²½¤¹¤ë¡£
-¸ú²Ì¤òÆÀ¤ë¤Ë¤Ï¡¢¥á¥â¥êÎΰè¤ò¤¢¤ëÄøÅÙÂ礭¤¯¤¹¤Ù¤­¤Ç¤¢¤ê¡¢
-¥á¥â¥ê¥¢¥¯¥»¥¹¤Î¥Ñ¥¿¡¼¥ó¤¬¤«¤Ê¤ê¶Ñ°ì¤Ê¾ì¹ç¤Ç¤â
-¾¯¤Ê¤¯¤È¤â 1MB °Ê¾å¤Ë¤¹¤Ù¤­¤Ç¤¢¤ë¡£
-¤³¤Î¥â¡¼¥É¤Ç¤â¡¢°ì¤Ä¤Î¥Ú¡¼¥¸¤Ø¤Î¥¢¥¯¥»¥¹¤Ë´Ø¤·¤Æ¤Ï
-°ì¤Ä¤Î¥Î¡¼¥É¤Î¥á¥â¥êÂӰ褬¾å¸Â¤È¤Ê¤ë¤³¤È¤ÏÊѤï¤ê¤Ê¤¤¡£
-
-.\"O .B MPOL_PREFERRED
-.\"O sets the preferred node for allocation.
-.\"O The kernel will try to allocate pages from this
-.\"O node first and fall back to other nodes if the
-.\"O preferred nodes is low on free memory.
-.\"O If
-.\"O .I nodemask
-.\"O specifies more than one node ID, the first node in the
-.\"O mask will be selected as the preferred node.
-.\"O If the
-.\"O .I nodemask
-.\"O and
-.\"O .I maxnode
-.\"O arguments specify the empty set, then the memory is allocated on
-.\"O the node of the CPU that triggered the allocation.
-.\"O This is the only way to specify "local allocation" for a
-.\"O range of memory via
-.\"O .BR mbind ().
-.B MPOL_PREFERRED
-¤Ï¡¢³ä¤êÅö¤Æ»þ¤ËÍ¥À褵¤ì¤ë¥Î¡¼¥É¤òÀßÄꤹ¤ë¡£
-¥«¡¼¥Í¥ë¤Ï¤Þ¤ºÍ¥Àè¥Î¡¼¥É¤Ë¥Ú¡¼¥¸³ä¤êÅö¤Æ¤ò¹Ô¤ª¤¦¤È¤·¡¢
-Í¥Àè¥Î¡¼¥É¤Ë¶õ¤­¥á¥â¥ê¤¬¾¯¤Ê¤¤¾ì¹ç¤Ë¾¤Î¥Î¡¼¥É¤Ë³ä¤êÅö¤Æ¤ò¹Ô¤¦¡£
-.I nodemask
-¤ËÊ£¿ô¤Î¥Î¡¼¥É ID ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï¡¢
-.I nodemask
-Æâ¤ÎºÇ½é¤Î¥Î¡¼¥É¤¬Í¥Àè¥Î¡¼¥É¤È¤·¤ÆÁªÂò¤µ¤ì¤ë¡£
-°ú¤­¿ô
-.IR nodemask ,
-.I maxnode
-¤Ç¶õ½¸¹ç¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ï¡¢³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿ CPU ¤Î¥Î¡¼¥É¤Ë
-¥á¥â¥ê³ä¤êÅö¤Æ¤¬¹Ô¤ï¤ì¤ë¡£
-.BR mbind (2)
-¤Ç¡¢¤¢¤ë¥á¥â¥êÎΰè¤ËÂФ·¤Æ¡Ö¥í¡¼¥«¥ë¤«¤é¤Î³ä¤êÅö¤Æ (local allocation)¡×¤ò
-»ØÄꤹ¤ëÊýË¡¤Ï¤³¤ì¤·¤«¤Ê¤¤¡£
+\fInodemask\fP は、最大で \fImaxnode\fP ビットから構成されるノードのビットマスクを指す。 ビットマスクの大きさは、直近の
+\fIsizeof(unsigned long)\fP の倍数に切り上げられるが、カーネルが使用するのは \fImaxnode\fP 個までのビットだけである。
+NULL 値の \fInodemask\fP もしくは値が 0 の \fImaxnode\fP はノードの空集合を表す。 \fImaxnode\fP の値が 0 の場合、
+\fInodemask\fP 引き数は無視される。 \fInodemask\fP が必須の場面では、 \fInodemask\fP に、オンラインで、そのプロセスの現在の
+CPU 集合コンテキストで 許可されており (\fBMPOL_F_STATIC_NODES\fP モードフラグが指定されていない場合)、メモリがあるノードが
+少なくとも一つ入っていなければならない。
+
+モード \fBMPOL_DEFAULT\fP はデフォルトではないプロセスのメモリポリシーを削除し、 デフォルトの動作に戻すことを指定するものである。
+\fBmbind\fP()  経由で、あるメモリ領域に対して \fBMPOL_DEFAULT\fP
+が適用された場合、プロセスのデフォルトポリシーを使用することを意味する。 プロセスのデフォルトポリシーは、 \fBset_mempolicy\fP(2)
+で変更されているかもしれない。 プロセスのポリシーのモードも \fBMPOL_DEFAULT\fP の場合、システム全体のデフォルトポリシーが使用される。
+システム全体のデフォルトポリシーでは、割り当てのきっかけとなった CPU のノードからページの割り当てを行う。 \fBMPOL_DEFAULT\fP
+では、引き数 \fInodemask\fP と \fImaxnode\fP にノードの空集合を指定しなければならない。
+
+\fBMPOL_BIND\fP は厳しいポリシーで、メモリ割り当ては \fInodemask\fP に指定されたノードに限定される。
+他のノードへの割り当ては行われない。 \fInodemask\fP に 2 個以上のノードが指定された場合、ページの割り当ては ノード ID
+が数字として最小のノードから開始され、 そのノードに空きメモリがなくなるまでそのノードから
+ページ割り当てが行われる。そのノードに空きメモリがなくなったら、 次に小さなノード ID を持つノードからページ割り当てが行われる。 これを、
+\fInodemask\fP で指定された全てのノードで空きメモリがなくなるまで繰り返す。 \fInodemask\fP
+で指定された以外のノードからはページの割り当ては行われない。
+
+\fBMPOL_INTERLEAVE\fP は、メモリ割り当てが \fInodemask\fP に指定されたノード間で交互に行われることを指定するものである。
+このポリシーでは、複数のノードにページを広げて配置し、これらのページへの メモリアクセスを分散することで、遅延ではなく、帯域を最適化する。
+効果を得るには、メモリ領域をある程度大きくすべきであり、 メモリアクセスのパターンがかなり均一な場合でも 少なくとも 1MB 以上にすべきである。
+このモードでも、一つのページへのアクセスに関しては 一つのノードのメモリ帯域が上限となることは変わりない。
+
+\fBMPOL_PREFERRED\fP は、割り当て時に優先されるノードを設定する。 カーネルはまず優先ノードにページ割り当てを行おうとし、
+優先ノードに空きメモリが少ない場合に他のノードに割り当てを行う。 \fInodemask\fP に複数のノード ID が指定された場合は、
+\fInodemask\fP 内の最初のノードが優先ノードとして選択される。 引き数 \fInodemask\fP, \fImaxnode\fP
+で空集合が指定された場合は、割り当てのきっかけとなった CPU のノードに メモリ割り当てが行われる。 \fBmbind\fP(2)
+で、あるメモリ領域に対して「ローカルからの割り当て (local allocation)」を 指定する方法はこれしかない。
 
-.\"O If
-.\"O .B MPOL_MF_STRICT
-.\"O is passed in
-.\"O .I flags
-.\"O and
-.\"O .I mode
-.\"O is not
-.\"O .BR MPOL_DEFAULT ,
-.\"O then the call will fail with the error
-.\"O .B EIO
-.\"O if the existing pages in the memory range don't follow the policy.
-.I flags
-¤Ë
-.B MPOL_MF_STRICT
-¤¬
-»ØÄꤵ¤ì¡¢
-.I mode
-¤¬
-.B MPOL_DEFAULT
-¤Ç¤Ê¤¤¾ì¹ç¡¢
-»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ë½¾¤Ã¤Æ¤¤¤Ê¤¤¥á¥â¥êÎΰè¤Ë¥Ú¡¼¥¸¤¬Â¸ºß¤¹¤ë¤È¡¢
-.BR mbind ()
-¤Ï¥¨¥é¡¼
-.B EIO
-¤Ç¼ºÇÔ¤¹¤ë¡£
 .\" According to the kernel code, the following is not true
 .\" --Lee Schermerhorn
-.\" .\"O In 2.6.16 or later the kernel will also try to move pages
-.\" .\"O to the requested node with this flag.
-.\" 2.6.16 °Ê¹ß¤Î¥«¡¼¥Í¥ë¤Ç¤Ï¡¢¤³¤Î¥Õ¥é¥°¤ÇÍ׵ᤵ¤ì¤¿¥Î¡¼¥É¤Ë
-.\" ¥Ú¡¼¥¸¤ò°ÜÆ°¤·¤è¤¦¤È¤¹¤ë¡£
+.\" In 2.6.16 or later the kernel will also try to move pages
+.\" to the requested node with this flag.
+\fIflags\fP に \fBMPOL_MF_STRICT\fP が 指定され、 \fImode\fP が \fBMPOL_DEFAULT\fP でない場合、
+指定されたポリシーに従っていないメモリ領域にページが存在すると、 \fBmbind\fP()  はエラー \fBEIO\fP で失敗する。
 
-.\"O If
-.\"O .B MPOL_MF_MOVE
-.\"O is specified in
-.\"O .IR flags ,
-.\"O then the kernel will attempt to move all the existing pages
-.\"O in the memory range so that they follow the policy.
-.\"O Pages that are shared with other processes will not be moved.
-.\"O If
-.\"O .B MPOL_MF_STRICT
-.\"O is also specified, then the call will fail with the error
-.\"O .B EIO
-.\"O if some pages could not be moved.
-.I flags
-¤Ë
-.B MPOL_MF_MOVE
-¤¬»ØÄꤵ¤ì¤ë¤È¡¢¥«¡¼¥Í¥ë¤Ï¤½¤Î¥á¥â¥êÎΰèÆâ¤Î´û¸¤ÎÁ´¤Æ¤Î¥Ú¡¼¥¸¤ò°ÜÆ°¤·¡¢
-»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ë½¾¤¦¤è¤¦¤Ë¤·¤è¤¦¤È¤¹¤ë¡£
-¾¤Î¥×¥í¥»¥¹¤È¶¦Í­¤µ¤ì¤Æ¤¤¤ë¥Ú¡¼¥¸¤Ï°ÜÆ°¤µ¤ì¤Ê¤¤¡£
-.B MPOL_MF_STRICT
-¤â»ØÄꤵ¤ì¤¿¾ì¹ç¡¢°ÜÆ°¤Ç¤­¤Ê¤«¤Ã¤¿¥Ú¡¼¥¸¤¬¤¢¤ë¤È¡¢
-.BR mbind ()
-¤Ï¥¨¥é¡¼
-.B EIO
-¤Ç¼ºÇÔ¤¹¤ë¡£
+\fIflags\fP に \fBMPOL_MF_MOVE\fP が指定されると、カーネルはそのメモリ領域内の既存の全てのページを移動し、
+指定されたポリシーに従うようにしようとする。 他のプロセスと共有されているページは移動されない。 \fBMPOL_MF_STRICT\fP
+も指定された場合、移動できなかったページがあると、 \fBmbind\fP()  はエラー \fBEIO\fP で失敗する。
 
-.\"O If
-.\"O .B MPOL_MF_MOVE_ALL
-.\"O is passed in
-.\"O .IR flags ,
-.\"O then the kernel will attempt to move all existing pages in the memory range
-.\"O regardless of whether other processes use the pages.
-.\"O The calling process must be privileged
-.\"O .RB ( CAP_SYS_NICE )
-.\"O to use this flag.
-.\"O If
-.\"O .B MPOL_MF_STRICT
-.\"O is also specified, then the call will fail with the error
-.\"O .B EIO
-.\"O if some pages could not be moved.
-.I flags
-¤Ë
-.B MPOL_MF_MOVE_ALL
-¤¬»ØÄꤵ¤ì¤ë¤È¡¢¥«¡¼¥Í¥ë¤Ï¤½¤Î¥á¥â¥êÎΰèÆâ¤Î´û¸¤ÎÁ´¤Æ¤Î¥Ú¡¼¥¸¤ò¡¢
-¾¤Î¥×¥í¥»¥¹¤¬¥Ú¡¼¥¸¤ò»ÈÍѤ·¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ë´Ø¤ï¤é¤º°ÜÆ°¤¹¤ë¡£
-¤³¤Î¥Õ¥é¥°¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤ÏÆø¢
-.RB ( CAP_SYS_NICE )
-¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-.B MPOL_MF_STRICT
-¤â»ØÄꤵ¤ì¤¿¾ì¹ç¡¢°ÜÆ°¤Ç¤­¤Ê¤«¤Ã¤¿¥Ú¡¼¥¸¤¬¤¢¤ë¤È¡¢
-.BR mbind ()
-¤Ï¥¨¥é¡¼
-.B EIO
-¤Ç¼ºÇÔ¤¹¤ë¡£
 .\" ---------------------------------------------------------------
-.\"O .SH RETURN VALUE
-.SH ÊÖ¤êÃÍ
-.\"O On success,
-.\"O .BR mbind ()
-.\"O returns 0;
-.\"O on error, \-1 is returned and
-.\"O .I errno
-.\"O is set to indicate the error.
-À®¸ù¤¹¤ë¤È¡¢
-.BR mbind ()
-¤Ï 0 ¤òÊÖ¤¹¡£¥¨¥é¡¼¤Î¾ì¹ç¡¢\-1 ¤òÊÖ¤·¡¢
-.I errno
-¤Ë¥¨¥é¡¼¤ò¼¨¤¹ÃͤòÀßÄꤹ¤ë¡£
+\fIflags\fP に \fBMPOL_MF_MOVE_ALL\fP が指定されると、カーネルはそのメモリ領域内の既存の全てのページを、
+他のプロセスがページを使用しているかどうかに関わらず移動する。 このフラグを使用するには、呼び出し元のプロセスは特権 (\fBCAP_SYS_NICE\fP)
+を持っていなければならない。 \fBMPOL_MF_STRICT\fP も指定された場合、移動できなかったページがあると、 \fBmbind\fP()  はエラー
+\fBEIO\fP で失敗する。
+.SH 返り値
 .\" ---------------------------------------------------------------
-.\"O .SH ERRORS
-.SH ¥¨¥é¡¼
+成功すると、 \fBmbind\fP()  は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。
+.SH ã\82¨ã\83©ã\83¼
 .\"  I think I got all of the error returns.  --Lee Schermerhorn
-.TP
-.B EFAULT
-.\"O Part or all of the memory range specified by
-.\"O .I nodemask
-.\"O and
-.\"O .I maxnode
-.\"O points outside your accessible address space.
-.\"O Or, there was an unmapped hole in the specified memory range.
-.I nodemask
-¤È
-.I maxnode
-¤Ç»ØÄꤵ¤ì¤¿¥á¥â¥êÎΰè¤Î°ìÉô¤Þ¤¿¤ÏÁ´Éô¤¬¡¢
-¸Æ¤Ó½Ð¤·¸µ¤¬¥¢¥¯¥»¥¹²Äǽ¤Ê¥¢¥É¥ì¥¹¶õ´Ö³°¤ò»Ø¤·¤Æ¤¤¤ë¡£
-¤â¤·¤¯¤Ï»ØÄꤵ¤ì¤¿¥á¥â¥êÎΰè¤Ë¥Þ¥Ã¥×¤µ¤ì¤Æ¤¤¤Ê¤¤Éôʬ (unmapped hole)
-¤¬¤¢¤Ã¤¿¡¢
-.TP
-.B EINVAL
-.\"O An invalid value was specified for
-.\"O .I flags
-.\"O or
-.\"O .IR mode ;
-.I flags
-¤ä
-.I mode
-¤ËÉÔÀµ¤ÊÃͤ¬»ØÄꤵ¤ì¤¿¡£
-.\"O or
-.\"O .I addr + len
-.\"O was less than
-.\"O .IR addr ;
-.I addr + len
-¤¬
-.I addr
-¤è¤ê¾®¤µ¤¤¡£
-.\"O or
-.\"O .I addr
-.\"O is not a multiple of the system page size.
-.\"O Or,
-.\"O .I mode
-.\"O is
-.\"O .B MPOL_DEFAULT
-.\"O and
-.\"O .I nodemask
-.\"O specified a nonempty set;
-.I addr
-¤¬¥·¥¹¥Æ¥à¤Î¥Ú¡¼¥¸¥µ¥¤¥º¤ÎÇÜ¿ô¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¡£
-¤Þ¤¿¤Ï
-.I mode
-¤¬
-.B MPOL_DEFAULT
-¤Ç
-.I nodemask
-¤Ë¶õ¤Ç¤Ê¤¤½¸¹ç¤¬»ØÄꤵ¤ì¤¿¡£
-.\"O or
-.\"O .I mode
-.\"O is
-.\"O .B MPOL_BIND
-.\"O or
-.\"O .B MPOL_INTERLEAVE
-.\"O and
-.\"O .I nodemask
-.\"O is empty.
-.I mode
-¤¬
-.B MPOL_BIND
-¤«
-.B MPOL_INTERLEAVE
-¤Ç
-.I nodemask
-¤¬¶õ¤Ç¤¢¤Ã¤¿¡£
-.\"O Or,
-.\"O .I maxnode
-.\"O exceeds a kernel-imposed limit.
-.I maxnode
-¤¬¥«¡¼¥Í¥ë¤ËŬÍѤµ¤ì¤¿¾å¸Â¤òĶ¤¨¤Æ¤¤¤ë¡£
+.TP 
+\fBEFAULT\fP
+\fInodemask\fP と \fImaxnode\fP で指定されたメモリ領域の一部または全部が、 呼び出し元がアクセス可能なアドレス空間外を指している。
+もしくは指定されたメモリ領域にマップされていない部分 (unmapped hole)  があった、
+.TP 
+\fBEINVAL\fP
 .\" As at 2.6.23, this limit is "a page worth of bits", e.g.,
 .\" 8 * 4096 bits, assuming a 4kB page size.
-.\"O Or,
-.\"O .I nodemask
-.\"O specifies one or more node IDs that are
-.\"O greater than the maximum supported node ID.
-.I nodemask
-¤Ë¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëºÇÂç¥Î¡¼¥É ID ¤è¤êÂ礭¤¤¥Î¡¼¥É¤¬»ØÄꤵ¤ì¤¿¡£
-.\"O Or, none of the node IDs specified by
-.\"O .I nodemask
-.\"O are on-line and allowed by the process's current cpuset context,
-.\"O or none of the specified nodes contain memory.
-.I nodemask
-¤Ë¡¢¥ª¥ó¥é¥¤¥ó¤Ç¡¢¤«¤Ä¤½¤Î¥×¥í¥»¥¹¤Î¸½ºß¤Î CPU ½¸¹ç¥³¥ó¥Æ¥­¥¹¥È¤Ç
-µö²Ä¤µ¤ì¤Æ¤¤¤ë¥Î¡¼¥É¤¬°ì¤Ä¤â´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¤«¡¢
-¥á¥â¥ê¤ò´Þ¤à¥Î¡¼¥É¤¬°ì¤Ä¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¡£
-.\"O Or, the
-.\"O .I mode
-.\"O argument specified both
-.\"O .B MPOL_F_STATIC_NODES
-.\"O and
-.\"O .BR MPOL_F_RELATIVE_NODES .
-.I mode
-°ú¤­¿ô¤Ë
-.B MPOL_F_STATIC_NODES
-¤È
-.B MPOL_F_RELATIVE_NODES
-¤ÎξÊý¤¬»ØÄꤵ¤ì¤¿¡£
-.TP
-.B EIO
-.\"O .B MPOL_MF_STRICT
-.\"O was specified and an existing page was already on a node
-.\"O that does not follow the policy;
-.B MPOL_MF_STRICT
-¤¬»ØÄꤵ¤ì¤¿¤¬¡¢¤³¤Î¥Ý¥ê¥·¡¼¤Ë½¾¤Ã¤Æ¤¤¤Ê¤¤¥Î¡¼¥É¤Ë
-¤¹¤Ç¤Ë¥Ú¡¼¥¸¤¬Â¸ºß¤·¤Æ¤¤¤¿¡£
-.\"O or
-.\"O .B MPOL_MF_MOVE
-.\"O or
-.\"O .B MPOL_MF_MOVE_ALL
-.\"O was specified and the kernel was unable to move all existing
-.\"O pages in the range.
-¤â¤·¤¯¤Ï
-.B MPOL_MF_MOVE
-¤«
-.B MPOL_MF_MOVE_ALL
-¤¬»ØÄꤵ¤ì¤¿¤¬¡¢¥«¡¼¥Í¥ë¤¬»ØÄꤵ¤ì¤¿ÎΰèÆâ¤Î´û¸¤ÎÁ´¤Æ¤Î¥Ú¡¼¥¸¤ò
-°ÜÆ°¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¡£
-.TP
-.B ENOMEM
-.\"O Insufficient kernel memory was available.
-ÍøÍѲÄǽ¤Ê¥«¡¼¥Í¥ë¥á¥â¥ê¤¬½½Ê¬¤Ê¤«¤Ã¤¿¡£
-.TP
-.B EPERM
-.\"O The
-.\"O .I flags
-.\"O argument included the
-.\"O .B MPOL_MF_MOVE_ALL
-.\"O flag and the caller does not have the
-.\"O .B CAP_SYS_NICE
-.\"O privilege.
-.I flags
-°ú¤­¿ô¤Ë
-.B MPOL_MF_MOVE_ALL
-¥Õ¥é¥°¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤¬¡¢¸Æ¤Ó½Ð¤·¸µ¤¬
-.B CAP_SYS_NICE
-Æø¢¤ò»ý¤¿¤Ê¤¤¡£
+\fIflags\fP や \fImode\fP に不正な値が指定された。 \fIaddr + len\fP が \fIaddr\fP より小さい。 \fIaddr\fP
+がシステムのページサイズの倍数になっていない。 または \fImode\fP が \fBMPOL_DEFAULT\fP で \fInodemask\fP
+に空でない集合が指定された。 \fImode\fP が \fBMPOL_BIND\fP か \fBMPOL_INTERLEAVE\fP で \fInodemask\fP
+が空であった。 \fImaxnode\fP がカーネルに適用された上限を超えている。 \fInodemask\fP に、サポートされている最大ノード ID
+より大きいノードが指定された。 \fInodemask\fP に、オンラインで、かつそのプロセスの現在の CPU 集合コンテキストで
+許可されているノードが一つも含まれていないか、 メモリを含むノードが一つも指定されていない。 \fImode\fP 引き数に
+\fBMPOL_F_STATIC_NODES\fP と \fBMPOL_F_RELATIVE_NODES\fP の両方が指定された。
+.TP 
+\fBEIO\fP
+\fBMPOL_MF_STRICT\fP が指定されたが、このポリシーに従っていないノードに すでにページが存在していた。 もしくは
+\fBMPOL_MF_MOVE\fP か \fBMPOL_MF_MOVE_ALL\fP が指定されたが、カーネルが指定された領域内の既存の全てのページを
+移動することができなかった。
+.TP 
+\fBENOMEM\fP
+利用可能なカーネルメモリが十分でなかった。
+.TP 
+\fBEPERM\fP
 .\" ---------------------------------------------------------------
-.\"O .SH VERSIONS
-.SH ¥Ð¡¼¥¸¥ç¥ó
-.\"O The
-.\"O .BR mbind ()
-.\"O system call was added to the Linux kernel in version 2.6.7.
-.BR mbind ()
-¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¥Ð¡¼¥¸¥ç¥ó 2.6.7 ¤Ç Linux ¥«¡¼¥Í¥ë¤ËÄɲ䵤줿¡£
-.\"O .SH CONFORMING TO
-.SH ½àµò
-.\"O This system call is Linux-specific.
-¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux Æȼ«¤Ç¤¢¤ë¡£
-.\"O .SH NOTES
-.SH Ãí°Õ
-.\"O For information on library support, see
-.\"O .BR numa (7).
-¥é¥¤¥Ö¥é¥ê¤Ë¤è¤ë¥µ¥Ý¡¼¥È¤Ë¤Ä¤¤¤Æ¤Ï
-.BR numa (7)
-¤ò»²¾È¡£
-
-.\"O NUMA policy is not supported on a memory mapped file range
-.\"O that was mapped with the
-.\"O .B MAP_SHARED
-.\"O flag.
-NUMA ¥Ý¥ê¥·¡¼¤Ï¡¢
-.B MAP_SHARED
-¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤Æ¥Þ¥Ã¥×¤µ¤ì¤¿¥á¥â¥ê¥Þ¥Ã¥×¡¦¥Õ¥¡¥¤¥ë¤ÎÎΰè¤Ç¤Ï
-¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
-
-.\"O The
-.\"O .B MPOL_DEFAULT
-.\"O mode can have different effects for
-.\"O .BR mbind ()
-.\"O and
-.\"O .BR set_mempolicy (2).
-.B MPOL_DEFAULT
-¥â¡¼¥É¤Ï¡¢
-.BR mbind ()
-¤È
-.BR set_mempolicy (2)
-¤Ç°Û¤Ê¤ë¸ú²Ì¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£
-.\"O When
-.\"O .B MPOL_DEFAULT
-.\"O is specified for
-.\"O .BR set_mempolicy (2),
-.\"O the process's policy reverts to system default policy
-.\"O or local allocation.
-.BR set_mempolicy (2)
-¤Ç
-.B MPOL_DEFAULT
-¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¤½¤Î¥×¥í¥»¥¹¤Î¥Ý¥ê¥·¡¼¤Ï¥·¥¹¥Æ¥à¤Î
-¥Ç¥Õ¥©¥ë¥È¥Ý¥ê¥·¡¼¡¢¤¹¤Ê¤ï¤Á¥í¡¼¥«¥ë¤«¤é¤Î³ä¤êÅö¤Æ¡¢¤ËÌá¤ë¡£
-.\"O When
-.\"O .B MPOL_DEFAULT
-.\"O is specified for a range of memory using
-.\"O .BR mbind (),
-.\"O any pages subsequently allocated for that range will use
-.\"O the process's policy, as set by
-.\"O .BR set_mempolicy (2).
-.BR mbind ()
-¤ò»È¤Ã¤Æ¥á¥â¥ê¤Î¤¢¤ëÎΰè¤Ë
-.B MPOL_DEFAULT
-¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¤½¤ÎÈϰϤËÂФ·¤Æ¤½¤ì°Ê¹ß¤Ë¹Ô¤ï¤ì¤ë¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤Ç¤Ï¡¢
-.BR set_mempolicy (2)
-¤ÇÀßÄꤷ¤¿¤Î¤ÈƱ¤¸¤è¤¦¤Ë¡¢¤½¤Î¥×¥í¥»¥¹¤Î¥Ý¥ê¥·¡¼¤¬Å¬ÍѤµ¤ì¤ë¡£
-.\"O This effectively removes the explicit policy from the
-.\"O specified range, "falling back" to a possibly nondefault
-.\"O policy.
-.\"0motoki: possibly nondefault policy ¤Ï default policy ¤Î´Ö°ã¤¤¡©
-¤³¤ì¤Ë¤è¤ê¡¢ÆÃÄê¤Î¥á¥â¥êÎΰè¤Ë¤Ä¤¤¤Æ¤À¤±ÌÀ¼¨Åª¤Ê¥Ý¥ê¥·¡¼¤òºï½ü¤·¡¢
-¥Ç¥Õ¥©¥ë¥È¤Î¥Ý¥ê¥·¡¼¤Ë¡ÖÌ᤹¡×¤³¤È¤¬¤Ç¤­¤ë¡£
-.\"O To select explicit "local allocation" for a memory range,
-.\"O specify a
-.\"O .I mode
-.\"O of
-.\"O .B MPOL_PREFERRED
-.\"O with an empty set of nodes.
-.\"O This method will work for
-.\"O .BR set_mempolicy (2),
-.\"O as well.
-¤¢¤ë¥á¥â¥êÎΰè¤ËÂФ·¤Æ¡Ö¥í¡¼¥«¥ë¤«¤é¤Î³ä¤êÅö¤Æ¡×¤òÌÀ¼¨Åª¤ËÀßÄꤹ¤ë¤Ë¤Ï¡¢
-.I mode
-¤Ë
-.B MPOL_PREFERRED
-¤ò»ØÄꤷ¡¢
-.I nodemask
-¤Ë¶õ½¸¹ç¤Î¥Î¡¼¥É¤ò»ØÄꤹ¤ì¤Ð¤è¤¤¡£
-¤³¤ÎÊýË¡¤Ï
-.BR set_mempolicy (2)
-¤Ç¤âÄÌÍѤ¹¤ë¡£
-
-.\"O Support for huge page policy was added with 2.6.16.
-.\"O For interleave policy to be effective on huge page mappings the
-.\"O policied memory needs to be tens of megabytes or larger.
-2.6.16 ¤Ç¥Ò¥å¡¼¥¸¥Ú¡¼¥¸¡¦¥Ý¥ê¥·¡¼¤Ø¤ÎÂбþ¤¬Äɲ䵤줿¡£
-¥¤¥ó¥¿¡¼¥ê¡¼¥Ö¡¦¥Ý¥ê¥·¡¼¤¬¥Ò¥å¡¼¥¸¥Ú¡¼¥¸¤Î¥Þ¥Ã¥Ô¥ó¥°¤Ç¸ú²Ì¤ò»ý¤Ä¤Ë¤Ï¡¢
-¥Ý¥ê¥·¡¼¤¬Å¬ÍѤµ¤ì¤ë¥á¥â¥ê¤¬¿ô½½¥á¥¬¥Ð¥¤¥È°Ê¾å¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£
-
-.\"O .B MPOL_MF_STRICT
-.\"O is ignored on huge page mappings.
-.B MPOL_MF_STRICT
-¤Ï¥Ò¥å¡¼¥¸¥Ú¡¼¥¸¤Î¥Þ¥Ã¥Ô¥ó¥°¤Ç¤Ï̵»ë¤µ¤ì¤ë¡£
-
-.\"O .B MPOL_MF_MOVE
-.\"O and
-.\"O .B MPOL_MF_MOVE_ALL
-.\"O are only available on Linux 2.6.16 and later.
-.B MPOL_MF_MOVE
-¤È
-.B MPOL_MF_MOVE_ALL
-¤Ï Linux 2.6.16 °Ê¹ß¤Ç¤Î¤ßÍøÍѲÄǽ¤Ç¤¢¤ë¡£
-.\"O .SH SEE ALSO
-.SH ´ØÏ¢¹àÌÜ
-.BR get_mempolicy (2),
-.BR getcpu (2),
-.BR mmap (2),
-.BR set_mempolicy (2),
-.BR shmat (2),
-.BR shmget (2),
-.BR numa (3),
-.BR cpuset (7),
-.BR numa (7),
-.BR numactl (8)
+\fIflags\fP 引き数に \fBMPOL_MF_MOVE_ALL\fP フラグが含まれているが、呼び出し元が \fBCAP_SYS_NICE\fP
+特権を持たない。
+.SH バージョン
+\fBmbind\fP()  システムコールはバージョン 2.6.7 で Linux カーネルに追加された。
+.SH 準拠
+このシステムコールは Linux 固有である。
+.SH 注意
+ライブラリによるサポートについては \fBnuma\fP(7)  を参照。
+
+NUMA ポリシーは、 \fBMAP_SHARED\fP フラグが指定されてマップされたメモリマップ・ファイルの領域では サポートされていない。
+
+\fBMPOL_DEFAULT\fP モードは、 \fBmbind\fP()  と \fBset_mempolicy\fP(2)  で異なる効果を持つことができる。
+\fBset_mempolicy\fP(2)  で \fBMPOL_DEFAULT\fP が指定された場合、そのプロセスのポリシーはシステムの
+デフォルトポリシー、すなわちローカルからの割り当て、に戻る。 \fBmbind\fP()  を使ってメモリのある領域に \fBMPOL_DEFAULT\fP
+が指定された場合、その範囲に対してそれ以降に行われるページの割り当てでは、 \fBset_mempolicy\fP(2)
+で設定したのと同じように、そのプロセスのポリシーが適用される。 これにより、特定のメモリ領域についてだけ明示的なポリシーを削除し、
+デフォルトのポリシーに「戻す」ことができる。 あるメモリ領域に対して「ローカルからの割り当て」を明示的に設定するには、 \fImode\fP に
+\fBMPOL_PREFERRED\fP を指定し、 \fInodemask\fP に空集合のノードを指定すればよい。 この方法は
+\fBset_mempolicy\fP(2)  でも通用する。
+
+2.6.16 でヒュージページ・ポリシーへの対応が追加された。 インターリーブ・ポリシーがヒュージページのマッピングで効果を持つには、
+ポリシーが適用されるメモリが数十メガバイト以上である必要がある。
+
+\fBMPOL_MF_STRICT\fP はヒュージページのマッピングでは無視される。
+
+\fBMPOL_MF_MOVE\fP と \fBMPOL_MF_MOVE_ALL\fP は Linux 2.6.16 以降でのみ利用可能である。
+.SH 関連項目
+\fBget_mempolicy\fP(2), \fBgetcpu\fP(2), \fBmmap\fP(2), \fBset_mempolicy\fP(2),
+\fBshmat\fP(2), \fBshmget\fP(2), \fBnuma\fP(3), \fBcpuset\fP(7), \fBnuma\fP(7),
+\fBnumactl\fP(8)
+.SH この文書について
+この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
+である。プロジェクトの説明とバグ報告に関する情報は
+http://www.kernel.org/doc/man\-pages/ に書かれている。