X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release%2Fman2%2Fmbind.2;h=21a853c2c6b1d8d4b312a09d1037b9e53e769561;hb=d6ffc03b1c10eddeb4564716656cf89586cce455;hp=066c603d92b3ebbf1c18c8d8c236f83da7bbba42;hpb=7e089fcc022461849bbc09437103cc337a88dd9c;p=linuxjm%2FLDP_man-pages.git diff --git a/release/man2/mbind.2 b/release/man2/mbind.2 index 066c603d..21a853c2 100644 --- a/release/man2/mbind.2 +++ b/release/man2/mbind.2 @@ -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. @@ -17,432 +18,199 @@ .\" .\" 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 .\" more precise specification of behavior. .\" -.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI -.\" all rights reserved. -.\" Translated 2006-07-25, Akihiro MOTOKI , 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" -.SH ̾Á° -mbind \- ¥á¥â¥êÎΰè¤ËÂФ·¤Æ¥á¥â¥ê¥Ý¥ê¥·¡¼¤òÀßÄꤹ¤ë -.SH ½ñ¼° +.\" MPOL_LOCAL +.\" commit 479e2802d09f1e18a97262c4c6f8f17ae5884bd8 +.\" Author: Peter Zijlstra +.\" Date: Thu Oct 25 14:16:28 2012 +0200 +.\" +.\" commit f2a07f40dbc603c15f8b06e6ec7f768af67b424f +.\" Author: Hugh Dickins +.\" Date: Wed Jan 2 02:01:33 2013 -0800 +.\" +.\" MPOL_MF_LAZY +.\" commit b24f53a0bea38b266d219ee651b22dba727c44ae +.\" Author: Lee Schermerhorn +.\" 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 " +\fB#include \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 -\fI\-lnuma\fP ¤Ç¥ê¥ó¥¯¤¹¤ë¡£ +\fI\-lnuma\fP でリンクする。 .fi -.SH ÀâÌÀ -.BR mbind () -¤Ï¡¢ -.I addr -¤«¤é»Ï¤Þ¤ëŤµ -.I len -¥Ð¥¤¥È¤ÎÈϰϤΥá¥â¥ê¤Ë NUMA ¥á¥â¥ê¥Ý¥ê¥·¡¼¤òÀßÄꤹ¤ë¡£ -NUMA ¥Ý¥ê¥·¡¼¤Ï¥Ý¥ê¥·¡¼¥â¡¼¥É¤È 0 ¸Ä°Ê¾å¤Î¥Î¡¼¥É¤«¤é¹½À®¤µ¤ì¤ë¡£ -¥á¥â¥ê¥Ý¥ê¥·¡¼¤Ï¤É¤Î¥Î¡¼¥É¤«¤é¥á¥â¥ê¤ò³ä¤êÅö¤Æ¤ë¤«¤ò·èÄꤹ¤ë¡£ - -.I addr -¤È -.I len -¤Ç»ØÄꤵ¤ì¤¿¥á¥â¥êÈϰϤˡ¢ -¥á¥â¥ê¤Î¡Ö̵̾¡×Îΰè \(em -.B MAP_ANONYMOUS -ÉÕ¤­¤Î -.BR mmap (2) -¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤Ã¤ÆºîÀ®¤µ¤ì¤¿¥á¥â¥êÎΰè \(em ¤ä -.B MAP_PRIVATE -ÉÕ¤­¤Î -.BR mmap (2) -¤ò»È¤Ã¤Æ¥Þ¥Ã¥×¤µ¤ì¤¿¥á¥â¥ê¥Þ¥Ã¥×¡¦¥Õ¥¡¥¤¥ë¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢ -¥Ú¡¼¥¸¤¬»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ë´ð¤Å¤¤¤Æ³ä¤êÅö¤Æ¤é¤ì¤ë¤Î¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó -¤¬¤½¤Î¥Ú¡¼¥¸¤Ø¤Î½ñ¤­¹þ¤ß (¥Ç¡¼¥¿¤Î³ÊǼ) ¤ò¹Ô¤Ã¤¿»þ¤À¤±¤Ç¤¢¤ë¡£ -̵̾Îΰè¤Î¾ì¹ç¡¢ºÇ½é¤ÎÆɤ߽Ф·¥¢¥¯¥»¥¹¤ÎºÝ¤Ë¤Ï -¥«¡¼¥Í¥ëÆâ¤ÎÁ´¥Ç¡¼¥¿¤¬ 0 ¤Ç¤¢¤ë¶¦Í­¥Ú¡¼¥¸¤¬»ÈÍѤµ¤ì¤ë¡£ -.B MAP_PRIVATE -¤Ç¥Þ¥Ã¥×¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î¾ì¹ç¡¢ºÇ½é¤ÎÆɤ߽Ф·¥¢¥¯¥»¥¹¤¬¤¢¤ë¤È¡¢ -¥Ú¡¼¥¸³ä¤êÅö¤Æ¤¬È¯À¸¤¹¤ë¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¥×¥í¥»¥¹¤Î¥Ç¥Õ¥©¥ë¥È¥Ý¥ê¥·¡¼ -¤Ë¤·¤¿¤¬¤Ã¤Æ¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤¬¹Ô¤ï¤ì¤ë¡£ -¥Ú¡¼¥¸³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¥×¥í¥»¥¹¤Ï¡¢ -.BR mbind () -¤ò¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤ÈƱ¤¸¤È¤Ï¸Â¤é¤Ê¤¤¡£ - -»ØÄꤵ¤ì¤¿¥á¥â¥êÈÏ°ÏÆâ¤Ë¤¢¤ë -.B MAP_SHARED -¤Î¥Þ¥Ã¥Ô¥ó¥°¤Ç¤Ï»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ï̵»ë¤µ¤ì¡¢ -¥Ú¡¼¥¸³ä¤êÅö¤Æ¤¬È¯À¸¤¹¤ë¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¥×¥í¥»¥¹¤Î¥Ç¥Õ¥©¥ë¥È¥Ý¥ê¥·¡¼¤Ë -¤·¤¿¤¬¤Ã¤Æ¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤¬¹Ô¤ï¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£ -·«¤êÊÖ¤·¤Ë¤Ê¤ë¤¬¡¢¥Ú¡¼¥¸³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¥×¥í¥»¥¹¤Ï¡¢ -.BR mbind () -¤ò¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤ÈƱ¤¸¤È¤Ï¸Â¤é¤Ê¤¤¡£ - -»ØÄꤵ¤ì¤¿¥á¥â¥êÈϰϤˡ¢ -.BR shmget (2) -¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤Ã¤ÆºîÀ®¤µ¤ì¤¿¤ê¡¢ -.BR shmat (2) -¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤Ã¤ÆÉղà (attach) ¤µ¤ì¤¿¤ê¤·¤¿¶¦Í­¥á¥â¥êÎΰ褬 -´Þ¤Þ¤ì¤ë¾ì¹ç¡¢ÌµÌ¾¥á¥â¥êÎΰè¤ä¶¦Í­¥á¥â¥êÎΰè¤ËÂФ¹¤ë¥Ú¡¼¥¸³ä¤êÅö¤Æ¤Ï¡¢ -¶¦Í­¥á¥â¥ê¥»¥°¥á¥ó¥È¤Ø¥Ý¥ê¥·¡¼¤ÎÀßÄê¤ò¹Ô¤Ã¤¿¥×¥í¥»¥¹¤¬¥Ú¡¼¥¸³ä¤êÅö¤Æ -¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¤«¤Ë´Ø¤ï¤é¤º¡¢»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ë¤·¤¿¤¬¤Ã¤Æ³ä¤êÅö¤Æ -¤¬¹Ô¤ï¤ì¤ë¡£ -¤·¤«¤·¤Ê¤¬¤é¡¢¶¦Í­¥á¥â¥êÎΰ褬 -.B SHM_HUGETLB -¥Õ¥é¥°¤ò»ØÄꤷ¤ÆºîÀ®¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢¥Ò¥å¡¼¥¸¥Ú¡¼¥¸ (huge page) ¤Î³ä¤êÅö¤Æ¤¬ -»ØÄꤵ¤ì¤¿¥Ý¥ê¥·¡¼¤Ë¤·¤¿¤¬¤Ã¤Æ¹Ô¤ï¤ì¤ë¤Î¤Ï¡¢¤½¤ÎÎΰè¤ËÂФ·¤Æ -.BR mbind () -¤ò¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤¬¥Ú¡¼¥¸³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿¾ì¹ç¤Î¤ß¤Ç¤¢¤ë¡£ - -¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ -.BR mbind () -¤Ï¿·µ¬¤Î¥á¥â¥ê³ä¤êÅö¤Æ¤ËÂФ·¤Æ¤Î¤ß¸ú²Ì¤ò»ý¤Ä¡£ -¥Ý¥ê¥·¡¼¤¬ÀßÄꤵ¤ì¤ëÁ°¤Ë¤¹¤Ç¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ëÈÏ°ÏÆâ¤Î¥Ú¡¼¥¸¤ËÂФ·¤Æ¤Ï¡¢ -¥Ý¥ê¥·¡¼¤Ï±Æ¶Á¤·¤Ê¤¤¡£ -¤³¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤Ï¡¢°Ê²¼¤ÇÀâÌÀ¤¹¤ë¥Õ¥é¥° -.B MPOL_MF_MOVE -¤ä -.B MPOL_MF_MOVE_ALL -¤Ë¤è¤ê¾å½ñ¤­¤µ¤ì¤ë²ÄǽÀ­¤¬¤¢¤ë¡£ - -.I mode -°ú¤­¿ô¤Ë¤Ï¡¢ -.BR MPOL_DEFAULT , -.BR MPOL_BIND , -.BR MPOL_INTERLEAVE , -.B MPOL_PREFERRED -¤Î¤¤¤º¤ì¤«°ì¤Ä¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ -.B MPOL_DEFAULT -°Ê³°¤Î¥Ý¥ê¥·¡¼¥â¡¼¥É¤Î¾ì¹ç¡¢¸Æ¤Ó½Ð¤·¸µ¤Ï -.I nodemask -°ú¤­¿ô¤Ç¤½¤Î¥Ý¥ê¥·¡¼¥â¡¼¥É¤òŬÍѤ¹¤ë¥Î¡¼¥É¤ò»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£ - -.I mode -°ú¤­¿ô¤Ë¤Ï¡¢ÄÉ²Ã¤Ç -.I "¥â¡¼¥É¥Õ¥é¥°" -¤ò´Þ¤á¤ë¤³¤È¤â¤Ç¤­¤ë¡£ -¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë -.I "¥â¡¼¥É¥Õ¥é¥°" -¤Ï°Ê²¼¤ÎÄ̤ê¤Ç¤¢¤ë¡£ -.TP -.BR MPOL_F_STATIC_NODES " (Linux-2.6.26 °Ê¹ß)" -¶õ¤Ç¤Ê¤¤ -.I nodemask -¤Ï¡¢ÊªÍý¥Î¡¼¥É ID ¤Ç¤¢¤ë¡£ -Linux ¤Ç¤Ï¡¢¤½¤Î¥×¥í¥»¥¹¤¬°Û¤Ê¤ë CPU ½¸¹ç¥³¥ó¥Æ¥­¥¹¥È (cpuset context) -¤Ë°ÜÆ°¤·¤¿¾ì¹ç¤Ç¤â¡¢¤½¤Î¥×¥í¥»¥¹¤Î¸½ºß¤Î CPU ½¸¹ç¥³¥ó¥Æ¥­¥¹¥È¤Ç -µö²Ä¤µ¤ì¤Æ¤¤¤ë¥Î¡¼¥É½¸¹ç¤¬ÊѲ½¤·¤¿¾ì¹ç¤Ç¤â¡¢ -.I nodemask -¤ò¥Þ¥Ã¥Ô¥ó¥°¤·Ä¾¤¹¤³¤È¤Ï¤Ê¤¤¡£ -.TP -.BR MPOL_F_RELATIVE_NODES " (Linux-2.6.26 °Ê¹ß)" -¶õ¤Ç¤Ê¤¤ -.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 -.I nodemask -¤Ï¡¢ºÇÂç¤Ç -.I maxnode -¥Ó¥Ã¥È¤«¤é¹½À®¤µ¤ì¤ë¥Î¡¼¥É¤Î¥Ó¥Ã¥È¥Þ¥¹¥¯¤ò»Ø¤¹¡£ -¥Ó¥Ã¥È¥Þ¥¹¥¯¤ÎÂ礭¤µ¤Ï¡¢Ä¾¶á¤Î -.I sizeof(unsigned long) -¤ÎÇÜ¿ô¤ËÀÚ¤ê¾å¤²¤é¤ì¤ë¤¬¡¢¥«¡¼¥Í¥ë¤¬»ÈÍѤ¹¤ë¤Î¤Ï -.I maxnode -¸Ä¤Þ¤Ç¤Î¥Ó¥Ã¥È¤À¤±¤Ç¤¢¤ë¡£ -NULL ÃͤΠ-.I nodemask -¤â¤·¤¯¤ÏÃͤ¬ 0 ¤Î -.I maxnode -¤Ï¥Î¡¼¥É¤Î¶õ½¸¹ç¤òɽ¤¹¡£ -.I maxnode -¤ÎÃͤ¬ 0 ¤Î¾ì¹ç¡¢ -.I nodemask -°ú¤­¿ô¤Ï̵»ë¤µ¤ì¤ë¡£ -.I nodemask -¤¬É¬¿Ü¤Î¾ìÌ̤Ǥϡ¢ -.I nodemask -¤Ë¡¢¥ª¥ó¥é¥¤¥ó¤Ç¡¢¤½¤Î¥×¥í¥»¥¹¤Î¸½ºß¤Î CPU ½¸¹ç¥³¥ó¥Æ¥­¥¹¥È¤Ç -µö²Ä¤µ¤ì¤Æ¤ª¤ê -.RB ( MPOL_F_STATIC_NODES -¥â¡¼¥É¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç)¡¢¥á¥â¥ê¤¬¤¢¤ë¥Î¡¼¥É¤¬ -¾¯¤Ê¤¯¤È¤â°ì¤ÄÆþ¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ - -¥â¡¼¥É -.B MPOL_DEFAULT -¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¤Ê¤¤¥×¥í¥»¥¹¤Î¥á¥â¥ê¥Ý¥ê¥·¡¼¤òºï½ü¤·¡¢ -¥Ç¥Õ¥©¥ë¥È¤ÎÆ°ºî¤ËÌ᤹¤³¤È¤ò»ØÄꤹ¤ë¤â¤Î¤Ç¤¢¤ë¡£ -.BR mbind () -·Ðͳ¤Ç¡¢¤¢¤ë¥á¥â¥êÎΰè¤ËÂФ·¤Æ -.B MPOL_DEFAULT -¤¬Å¬ÍѤµ¤ì¤¿¾ì¹ç¡¢¥×¥í¥»¥¹¤Î¥Ç¥Õ¥©¥ë¥È¥Ý¥ê¥·¡¼¤ò»ÈÍѤ¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£ -¥×¥í¥»¥¹¤Î¥Ç¥Õ¥©¥ë¥È¥Ý¥ê¥·¡¼¤Ï¡¢ -.BR set_mempolicy (2) -¤ÇÊѹ¹¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ -¥×¥í¥»¥¹¤Î¥Ý¥ê¥·¡¼¤Î¥â¡¼¥É¤â -.B MPOL_DEFAULT -¤Î¾ì¹ç¡¢¥·¥¹¥Æ¥àÁ´ÂΤΥǥե©¥ë¥È¥Ý¥ê¥·¡¼¤¬»ÈÍѤµ¤ì¤ë¡£ -¥·¥¹¥Æ¥àÁ´ÂΤΥǥե©¥ë¥È¥Ý¥ê¥·¡¼¤Ç¤Ï¡¢³ä¤êÅö¤Æ¤Î¤­¤Ã¤«¤±¤È¤Ê¤Ã¤¿ -CPU ¤Î¥Î¡¼¥É¤«¤é¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤ò¹Ô¤¦¡£ -.B MPOL_DEFAULT -¤Ç¤Ï¡¢°ú¤­¿ô -.I nodemask -¤È -.I maxnode -¤Ë¥Î¡¼¥É¤Î¶õ½¸¹ç¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ - -.B MPOL_BIND -¤Ï¸·¤·¤¤¥Ý¥ê¥·¡¼¤Ç¡¢¥á¥â¥ê³ä¤êÅö¤Æ¤Ï -.I nodemask -¤Ë»ØÄꤵ¤ì¤¿¥Î¡¼¥É¤Ë¸ÂÄꤵ¤ì¤ë¡£ -¾¤Î¥Î¡¼¥É¤Ø¤Î³ä¤êÅö¤Æ¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£ -.I nodemask -¤Ë 2 ¸Ä°Ê¾å¤Î¥Î¡¼¥É¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤Ï -¥Î¡¼¥É ID ¤¬¿ô»ú¤È¤·¤ÆºÇ¾®¤Î¥Î¡¼¥É¤«¤é³«»Ï¤µ¤ì¡¢ -¤½¤Î¥Î¡¼¥É¤Ë¶õ¤­¥á¥â¥ê¤¬¤Ê¤¯¤Ê¤ë¤Þ¤Ç¤½¤Î¥Î¡¼¥É¤«¤é -¥Ú¡¼¥¸³ä¤êÅö¤Æ¤¬¹Ô¤ï¤ì¤ë¡£¤½¤Î¥Î¡¼¥É¤Ë¶õ¤­¥á¥â¥ê¤¬¤Ê¤¯¤Ê¤Ã¤¿¤é¡¢ -.\"motoki: the next highest ¤Ï the next lowest ¤Î´Ö°ã¤¤¡© -¼¡¤Ë¾®¤µ¤Ê¥Î¡¼¥É ID ¤ò»ý¤Ä¥Î¡¼¥É¤«¤é¥Ú¡¼¥¸³ä¤êÅö¤Æ¤¬¹Ô¤ï¤ì¤ë¡£ -¤³¤ì¤ò¡¢ -.I nodemask -¤Ç»ØÄꤵ¤ì¤¿Á´¤Æ¤Î¥Î¡¼¥É¤Ç¶õ¤­¥á¥â¥ê¤¬¤Ê¤¯¤Ê¤ë¤Þ¤Ç·«¤êÊÖ¤¹¡£ -.I nodemask -¤Ç»ØÄꤵ¤ì¤¿°Ê³°¤Î¥Î¡¼¥É¤«¤é¤Ï¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£ - -.B MPOL_INTERLEAVE -¤Ï¡¢¥á¥â¥ê³ä¤êÅö¤Æ¤¬ -.I nodemask -¤Ë»ØÄꤵ¤ì¤¿¥Î¡¼¥É´Ö¤Ç¸ò¸ß¤Ë¹Ô¤ï¤ì¤ë¤³¤È¤ò»ØÄꤹ¤ë¤â¤Î¤Ç¤¢¤ë¡£ -¤³¤Î¥Ý¥ê¥·¡¼¤Ç¤Ï¡¢Ê£¿ô¤Î¥Î¡¼¥É¤Ë¥Ú¡¼¥¸¤ò¹­¤²¤ÆÇÛÃÖ¤·¡¢¤³¤ì¤é¤Î¥Ú¡¼¥¸¤Ø¤Î -¥á¥â¥ê¥¢¥¯¥»¥¹¤òʬ»¶¤¹¤ë¤³¤È¤Ç¡¢ÃÙ±ä¤Ç¤Ï¤Ê¤¯¡¢ÂÓ°è¤òºÇŬ²½¤¹¤ë¡£ -¸ú²Ì¤òÆÀ¤ë¤Ë¤Ï¡¢¥á¥â¥êÎΰè¤ò¤¢¤ëÄøÅÙÂ礭¤¯¤¹¤Ù¤­¤Ç¤¢¤ê¡¢ -¥á¥â¥ê¥¢¥¯¥»¥¹¤Î¥Ñ¥¿¡¼¥ó¤¬¤«¤Ê¤ê¶Ñ°ì¤Ê¾ì¹ç¤Ç¤â -¾¯¤Ê¤¯¤È¤â 1MB °Ê¾å¤Ë¤¹¤Ù¤­¤Ç¤¢¤ë¡£ -¤³¤Î¥â¡¼¥É¤Ç¤â¡¢°ì¤Ä¤Î¥Ú¡¼¥¸¤Ø¤Î¥¢¥¯¥»¥¹¤Ë´Ø¤·¤Æ¤Ï -°ì¤Ä¤Î¥Î¡¼¥É¤Î¥á¥â¥êÂӰ褬¾å¸Â¤È¤Ê¤ë¤³¤È¤ÏÊѤï¤ê¤Ê¤¤¡£ - -.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)」を 指定する方法はこれしかない。 -.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 で失敗する。 -.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 で失敗する。 -.I flags -¤Ë -.B MPOL_MF_MOVE_ALL -¤¬»ØÄꤵ¤ì¤ë¤È¡¢¥«¡¼¥Í¥ë¤Ï¤½¤Î¥á¥â¥êÎΰèÆâ¤Î´û¸¤ÎÁ´¤Æ¤Î¥Ú¡¼¥¸¤ò¡¢ -¾¤Î¥×¥í¥»¥¹¤¬¥Ú¡¼¥¸¤ò»ÈÍѤ·¤Æ¤¤¤ë¤«¤É¤¦¤«¤Ë´Ø¤ï¤é¤º°ÜÆ°¤¹¤ë¡£ -¤³¤Î¥Õ¥é¥°¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤ÏÆø¢ -.RB ( CAP_SYS_NICE ) -¤ò»ý¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ -.B MPOL_MF_STRICT -¤â»ØÄꤵ¤ì¤¿¾ì¹ç¡¢°ÜÆ°¤Ç¤­¤Ê¤«¤Ã¤¿¥Ú¡¼¥¸¤¬¤¢¤ë¤È¡¢ -.BR mbind () -¤Ï¥¨¥é¡¼ -.B EIO -¤Ç¼ºÇÔ¤¹¤ë¡£ .\" --------------------------------------------------------------- -.SH ÊÖ¤êÃÍ -À®¸ù¤¹¤ë¤È¡¢ -.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 返り値 .\" --------------------------------------------------------------- -.SH ¥¨¥é¡¼ +成功すると、 \fBmbind\fP() は 0 を返す。エラーの場合、\-1 を返し、 \fIerrno\fP にエラーを示す値を設定する。 +.SH エラー .\" I think I got all of the error returns. --Lee Schermerhorn -.TP -.B EFAULT -.I nodemask -¤È -.I maxnode -¤Ç»ØÄꤵ¤ì¤¿¥á¥â¥êÎΰè¤Î°ìÉô¤Þ¤¿¤ÏÁ´Éô¤¬¡¢ -¸Æ¤Ó½Ð¤·¸µ¤¬¥¢¥¯¥»¥¹²Äǽ¤Ê¥¢¥É¥ì¥¹¶õ´Ö³°¤ò»Ø¤·¤Æ¤¤¤ë¡£ -¤â¤·¤¯¤Ï»ØÄꤵ¤ì¤¿¥á¥â¥êÎΰè¤Ë¥Þ¥Ã¥×¤µ¤ì¤Æ¤¤¤Ê¤¤Éôʬ (unmapped hole) -¤¬¤¢¤Ã¤¿¡¢ -.TP -.B EINVAL -.I flags -¤ä -.I mode -¤ËÉÔÀµ¤ÊÃͤ¬»ØÄꤵ¤ì¤¿¡£ -.I addr + len -¤¬ -.I addr -¤è¤ê¾®¤µ¤¤¡£ -.I addr -¤¬¥·¥¹¥Æ¥à¤Î¥Ú¡¼¥¸¥µ¥¤¥º¤ÎÇÜ¿ô¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¡£ -¤Þ¤¿¤Ï -.I mode -¤¬ -.B MPOL_DEFAULT -¤Ç -.I nodemask -¤Ë¶õ¤Ç¤Ê¤¤½¸¹ç¤¬»ØÄꤵ¤ì¤¿¡£ -.I mode -¤¬ -.B MPOL_BIND -¤« -.B MPOL_INTERLEAVE -¤Ç -.I nodemask -¤¬¶õ¤Ç¤¢¤Ã¤¿¡£ -.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. -.I nodemask -¤Ë¡¢¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ëºÇÂç¥Î¡¼¥É ID ¤è¤êÂ礭¤¤¥Î¡¼¥É¤¬»ØÄꤵ¤ì¤¿¡£ -.I nodemask -¤Ë¡¢¥ª¥ó¥é¥¤¥ó¤Ç¡¢¤«¤Ä¤½¤Î¥×¥í¥»¥¹¤Î¸½ºß¤Î CPU ½¸¹ç¥³¥ó¥Æ¥­¥¹¥È¤Ç -µö²Ä¤µ¤ì¤Æ¤¤¤ë¥Î¡¼¥É¤¬°ì¤Ä¤â´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¤«¡¢ -¥á¥â¥ê¤ò´Þ¤à¥Î¡¼¥É¤¬°ì¤Ä¤â»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¡£ -.I mode -°ú¤­¿ô¤Ë -.B MPOL_F_STATIC_NODES -¤È -.B MPOL_F_RELATIVE_NODES -¤ÎξÊý¤¬»ØÄꤵ¤ì¤¿¡£ -.TP -.B EIO -.B MPOL_MF_STRICT -¤¬»ØÄꤵ¤ì¤¿¤¬¡¢¤³¤Î¥Ý¥ê¥·¡¼¤Ë½¾¤Ã¤Æ¤¤¤Ê¤¤¥Î¡¼¥É¤Ë -¤¹¤Ç¤Ë¥Ú¡¼¥¸¤¬Â¸ºß¤·¤Æ¤¤¤¿¡£ -¤â¤·¤¯¤Ï -.B MPOL_MF_MOVE -¤« -.B MPOL_MF_MOVE_ALL -¤¬»ØÄꤵ¤ì¤¿¤¬¡¢¥«¡¼¥Í¥ë¤¬»ØÄꤵ¤ì¤¿ÎΰèÆâ¤Î´û¸¤ÎÁ´¤Æ¤Î¥Ú¡¼¥¸¤ò -°ÜÆ°¤¹¤ë¤³¤È¤¬¤Ç¤­¤Ê¤«¤Ã¤¿¡£ -.TP -.B ENOMEM -ÍøÍѲÄǽ¤Ê¥«¡¼¥Í¥ë¥á¥â¥ê¤¬½½Ê¬¤Ê¤«¤Ã¤¿¡£ -.TP -.B EPERM -.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 .\" --------------------------------------------------------------- -.SH ¥Ð¡¼¥¸¥ç¥ó -.BR mbind () -¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¥Ð¡¼¥¸¥ç¥ó 2.6.7 ¤Ç Linux ¥«¡¼¥Í¥ë¤ËÄɲ䵤줿¡£ -.SH ½àµò -¤³¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï Linux Æȼ«¤Ç¤¢¤ë¡£ -.SH Ãí°Õ -¥é¥¤¥Ö¥é¥ê¤Ë¤è¤ë¥µ¥Ý¡¼¥È¤Ë¤Ä¤¤¤Æ¤Ï -.BR numa (7) -¤ò»²¾È¡£ - -NUMA ¥Ý¥ê¥·¡¼¤Ï¡¢ -.B MAP_SHARED -¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤Æ¥Þ¥Ã¥×¤µ¤ì¤¿¥á¥â¥ê¥Þ¥Ã¥×¡¦¥Õ¥¡¥¤¥ë¤ÎÎΰè¤Ç¤Ï -¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£ - -.B MPOL_DEFAULT -¥â¡¼¥É¤Ï¡¢ -.BR mbind () -¤È -.BR set_mempolicy (2) -¤Ç°Û¤Ê¤ë¸ú²Ì¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£ -.BR set_mempolicy (2) -¤Ç -.B MPOL_DEFAULT -¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¤½¤Î¥×¥í¥»¥¹¤Î¥Ý¥ê¥·¡¼¤Ï¥·¥¹¥Æ¥à¤Î -¥Ç¥Õ¥©¥ë¥È¥Ý¥ê¥·¡¼¡¢¤¹¤Ê¤ï¤Á¥í¡¼¥«¥ë¤«¤é¤Î³ä¤êÅö¤Æ¡¢¤ËÌá¤ë¡£ -.BR mbind () -¤ò»È¤Ã¤Æ¥á¥â¥ê¤Î¤¢¤ëÎΰè¤Ë -.B MPOL_DEFAULT -¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢¤½¤ÎÈϰϤËÂФ·¤Æ¤½¤ì°Ê¹ß¤Ë¹Ô¤ï¤ì¤ë¥Ú¡¼¥¸¤Î³ä¤êÅö¤Æ¤Ç¤Ï¡¢ -.BR set_mempolicy (2) -¤ÇÀßÄꤷ¤¿¤Î¤ÈƱ¤¸¤è¤¦¤Ë¡¢¤½¤Î¥×¥í¥»¥¹¤Î¥Ý¥ê¥·¡¼¤¬Å¬ÍѤµ¤ì¤ë¡£ -.\"0motoki: possibly nondefault policy ¤Ï default policy ¤Î´Ö°ã¤¤¡© -¤³¤ì¤Ë¤è¤ê¡¢ÆÃÄê¤Î¥á¥â¥êÎΰè¤Ë¤Ä¤¤¤Æ¤À¤±ÌÀ¼¨Åª¤Ê¥Ý¥ê¥·¡¼¤òºï½ü¤·¡¢ -¥Ç¥Õ¥©¥ë¥È¤Î¥Ý¥ê¥·¡¼¤Ë¡ÖÌ᤹¡×¤³¤È¤¬¤Ç¤­¤ë¡£ -¤¢¤ë¥á¥â¥êÎΰè¤ËÂФ·¤Æ¡Ö¥í¡¼¥«¥ë¤«¤é¤Î³ä¤êÅö¤Æ¡×¤òÌÀ¼¨Åª¤ËÀßÄꤹ¤ë¤Ë¤Ï¡¢ -.I mode -¤Ë -.B MPOL_PREFERRED -¤ò»ØÄꤷ¡¢ -.I nodemask -¤Ë¶õ½¸¹ç¤Î¥Î¡¼¥É¤ò»ØÄꤹ¤ì¤Ð¤è¤¤¡£ -¤³¤ÎÊýË¡¤Ï -.BR set_mempolicy (2) -¤Ç¤âÄÌÍѤ¹¤ë¡£ - -2.6.16 ¤Ç¥Ò¥å¡¼¥¸¥Ú¡¼¥¸¡¦¥Ý¥ê¥·¡¼¤Ø¤ÎÂбþ¤¬Äɲ䵤줿¡£ -¥¤¥ó¥¿¡¼¥ê¡¼¥Ö¡¦¥Ý¥ê¥·¡¼¤¬¥Ò¥å¡¼¥¸¥Ú¡¼¥¸¤Î¥Þ¥Ã¥Ô¥ó¥°¤Ç¸ú²Ì¤ò»ý¤Ä¤Ë¤Ï¡¢ -¥Ý¥ê¥·¡¼¤¬Å¬ÍѤµ¤ì¤ë¥á¥â¥ê¤¬¿ô½½¥á¥¬¥Ð¥¤¥È°Ê¾å¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£ - -.B MPOL_MF_STRICT -¤Ï¥Ò¥å¡¼¥¸¥Ú¡¼¥¸¤Î¥Þ¥Ã¥Ô¥ó¥°¤Ç¤Ï̵»ë¤µ¤ì¤ë¡£ - -.B MPOL_MF_MOVE -¤È -.B MPOL_MF_MOVE_ALL -¤Ï Linux 2.6.16 °Ê¹ß¤Ç¤Î¤ßÍøÍѲÄǽ¤Ç¤¢¤ë¡£ -.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.51 の一部 +である。プロジェクトの説明とバグ報告に関する情報は +http://www.kernel.org/doc/man\-pages/ に書かれている。