名前


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

書式


#include <numaif.h>

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

説明


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

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

flags に 0 が指定された場合、 (set_mempolicy(2) で設定された) 呼び出し元プロセスのデフォルトポリシーに関する情報を返す。

flagsMPOL_F_ADDR が指定された場合、 addr で指定されたメモリアドレスに適用されているポリシーに関する情報を返す。 set_mempolicy(2) を使って addr を含むページに対してポリシーが設定されていた場合には、 返されるポリシーはプロセスのデフォルトポリシーと違うことがある。

policy が NULL 以外の場合、ポリシーを返すのに policy が使われる。 nodemask が NULL 以外の場合、そのポリシーに対応するノードマスクを返すのに nodemask が使われる。 maxnodenodemask に格納できる最大ビット数に 1 を足した値を指定する。 ビット数は常に unsigned long の倍数に切り上げられる。

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

返り値


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

準拠


このシステムコールは Linux 独自である。

注意


このマニュアルページは完全ではない。 ここには、 MPOL_F_NODE フラグの詳細について書かれていない。 MPOL_F_NODE フラグは get_mempolicy() の動作を変更するものである。 ここに書いていないのは意図的なものである: このフラグはアプリケーションによって使うことを意図したものではなく、 カーネルの将来のバージョンで、このフラグの動作は変更されるかもしれないし、 削除されるかもしれない。 このフラグを使用しないこと。

バージョンとライブラリでの対応

mbind(2) 参照。

関連項目


mbind(2), set_mempolicy(2), numactl(8), numa(3)

openSUSE Logo

コンテンツ