Manpages

名 前

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/ に 書 か れ て い る 。