Provided by: manpages-ja-dev_0.5.0.0.20180315+dfsg-1_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.79 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。