Provided by: manpages-ja-dev_0.5.0.0.20140515+dfsg-2_all bug

名前

       get_mempolicy - プロセスの NUMA メモリのポリシーを取得する

書式

       #include <numaif.h>

       int get_mempolicy(int *mode, unsigned long *nodemask,
                         unsigned long maxnode, unsigned long addr,
                         unsigned long flags);

       -lnuma でリンクする。

説明

       get_mempolicy()   は、呼び出し元プロセスもしくは指定されたメモリアドレスの NUMA ポリシーを
       flags の設定に従って取得する。

       NUMA (非対称メモリアクセス)  マシンでは、CPU  により  メモリコントローラが異なり、距離も異
       なっている。 メモリポリシーは、どのノードからメモリをそのプロセスに 割り当てるかを定めるも
       のである。

       flags に 0 が指定された場合、 (set_mempolicy(2)  で設定された)  呼び出し元プロセスのデフォ
       ルトポリシーに関する情報を返す。  返されたポリシー  [modenodemask] を set_mempolicy(2)
       に渡すことで、そのプロセスのポリシーを get_mempolicy()  を呼び出した時点の状態に戻すことが
       できる。

       flagsMPOL_F_MEMS_ALLOWED (Linux 2.6.24 以降で利用可能) を指定すると、 mode 引き数は無
       視され、 そのプロセスがその後の mbind(2)  や set_mempolicy(2)  で [モードフラグ が指定され
       ていない場合に    ]    指定できるノード    (メモリ)    の集合が    nodemask   に返される。
       MPOL_F_MEMS_ALLOWED を、 MPOL_F_ADDRMPOL_F_NODE と同時に指定することはできない。

       flagsMPOL_F_ADDR が指定された場合、 addr  で指定されたメモリアドレスに適用されているポ
       リシーに関する情報を返す。  mbind(2)   や  numa(3)  で説明されているヘルパー関数を使って、
       addr を含むメモリ領域に対するポリシーが設定されていた場合には、 返されるポリシーはプロセス
       のデフォルトポリシーと違うことがある。

       mode  引き数が NULL でない場合、 get_mempolicy()  は要求された NUMA ポリシーのモードと追加
       の モードフラグmode が指す場所に格納する。 nodemask が NULL 以外の場合、そのポリシーに
       対応するノードマスクを この引き数が指す場所に格納する。 maxnode には nodemask に格納できる
       ノード ID の数、つまり最大ノード ID に 1 を足した値を指定する。 maxnode で指定された値は常
       に sizeof(unsigned long) の倍数に切り上げられる。

       flagsMPOL_F_NODEMPOL_F_ADDR の両方が指定された場合、 get_mempolicy() はアドレス
       addr が割り当てられているノードのノード ID を mode が指す場所に入れて返す。 指定されたアド
       レスにどのページもまだ割り当てられていない場合、  get_mempolicy() は、あたかもそのプロセス
       がそのアドレスに対して読み込みアクセスを  実行したかのようにページの割り当てを行い、ページ
       が割り当てられた ノードの ID を返す。

       flagsMPOL_F_NODE は指定されたが、 MPOL_F_ADDR は指定されていない場合で、かつ そのプロ
       セスの現在のポリシーが MPOL_INTERLEAVE の場合、 get_mempolicy() は、そのプロセスに対して割
       り当てられたカーネルの内部ページで  次にインターリーブ用に使用されるノードのノード ID を、
       NULL でない mode 引き数が指す場所に入れて返す。 読み込みアクセス用として MAP_PRIVATE  フラ
       グ付きで mmap(2) したプロセスメモリ領域や、 任意のアクセス用として MAP_SHARED フラグ付きで
       mmap(2) したメモリ領域の、メモリマップされたファイルに対するページも  上記のプロセスに対し
       て割り当てられたページに含まれる。

       他のフラグは予約されている。

       設定可能なポリシーの概要については set_mempolicy(2)  を参照。

返り値

       成功すると、  get_mempolicy()  は 0 を返す。エラーの場合、-1 を返し、 errno にエラーを示す
       値を設定する。

エラー

       EFAULT nodemaskmaxnode で指定されたメモリ領域の一部または全部が、 呼び出し元がアクセス
              可能なアドレス空間外を指している。

       EINVAL maxnode で指定された値がシステムがサポートするノード ID の数よりも少ない。 または、
              flagsMPOL_F_NODE でも MPOL_F_ADDR でもない値が指定された。  または、  flagsMPOL_F_ADDR  が指定されており、 addr が NULL である。 または、 flagsMPOL_F_ADDR
              がされておらず、 addr が NULL でない。 または、 flagsMPOL_F_NODE が指定されてお
              り、 MPOL_F_ADDR が指定されておらず、 プロセスの現在のポリシーが MPOL_INTERLEAVE で
              ない。 または、 flagsMPOL_F_MEMS_ALLOWED  が指定されており、さらに  MPOL_F_ADDRMPOL_F_NODE のいずれかが指定されている。 (他にも EINVAL となる場合がある。)

バージョン

       get_mempolicy()  システムコールはバージョン 2.6.7 で Linux カーネルに追加された。

準拠

       このシステムコールは Linux 固有である。

注意

       ライブラリによるサポートについては numa(7)  を参照。

関連項目

       getcpu(2), mbind(2), mmap(2), set_mempolicy(2), numa(3), numa(7), numactl(8)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 3.65 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。