Manpages

名 前

migrate_pages − プ ロ セ ス の 全 ペ ー ジ を 別 の ノ ー ド 集 合 に 移 動 す る

書 式

#include <numaif.h>

long migrate_pages(int pid, unsigned long maxnode,
const unsigned long *
old_nodes,
const unsigned long *
new_nodes);

−lnuma と リ ン ク す る 。

説 明

MIGRATE_PAGES() は 、 メ モ リ ー ノ ー ド old_nodes に あ る プ ロ セ ス pid の 全 ペ ー ジ を 、 メ モ リ ー ノ ー ド new_nodes に 移 動 し よ う と す る 。 old_nodes で 指 定 さ れ た メ モ リ ー ノ ー ド に 置 か れ て い な い ペ ー ジ は 移 動 さ れ な い 。 カ ー ネ ル は 、 new_nodes へ の 移 動 の 際 に 、 old_nodes 内 の 相 対 的 な ト ポ ロ ジ ー 関 係 を 可 能 な 限 り 維 持 し よ う と す る 。 引 き 数 old_nodesnew_nodes は 、 最 大 で maxnode ビ ッ ト か ら 構 成 さ れ る ノ ー ド 番 号 の ビ ッ ト マ ス ク へ の ポ イ ン タ ー で あ る 。 各 ビ ッ ト マ ス ク は 符 号 な し long 整 数 の 配 列 と し て 管 理 さ れ る (maxnode で 指 定 さ れ た 長 さ を 越 え た 部 分 の ビ ッ ト は 無 視 さ れ る )。 引 き 数 maxnode は 最 大 ノ ー ド 番 号 で あ り 、 ビ ッ ト マ ス ク の 長 さ に 1 を 加 え た 値 と な る (こ れ は mbind(2) と 同 じ だ が 、 select(2) と は 違 う )。 引 き 数 pid は 、 移 動 を 行 う ペ ー ジ の 所 有 者 の プ ロ セ ス ID で あ る 。 別 の プ ロ セ ス の ペ ー ジ を 移 動 す る に は 、 呼 び 出 し た プ ロ セ ス が 特 権 (CAP_SYS_NICE) を 持 っ て い る か 、 呼 び 出 し た プ ロ セ ス の 実 ユ ー ザ ー ID か 実 効 ユ ー ザ ー ID が ペ ー ジ 移 動 の 対 象 プ ロ セ ス の 実 ユ ー ザ ー ID か saved−set ユ ー ザ ー ID と 一 致 し て い な け れ ば な ら な い 。 pid が 0 の 場 合 、 migrate_pages() は 呼 び 出 し た プ ロ セ ス の ペ ー ジ を 移 動 す る 。 別 の プ ロ セ ス と 共 有 し て い る ペ ー ジ は 、 呼 び 出 し た プ ロ セ ス が CAP_SYS_NICE 特 権 を 持 っ て い る 場 合 に の み 移 動 さ れ る 。

返 り 値

migrate_pages() は 、 移 動 で き な か っ た ペ ー ジ 数 を 返 す (つ ま り 、 移 動 に 成 功 し た 場 合 は 返 り 値 は 0 と な る )。 エ ラ ー の 場 合 、 −1 を 返 し 、 errno に エ ラ ー を 示 す 値 を 設 定 す る 。

エ ラ ー

EPERM

pid で 指 定 さ れ た プ ロ セ ス の ペ ー ジ を 移 動 す る の に 必 要 な 特 権 (CAP_SYS_NICE) が な か っ た 。 ま た は 、 指 定 さ れ た 対 象 ノ ー ド に ア ク セ ス す る の に 必 要 な 権 限 (CAP_SYS_NICE) が な か っ た 。

ESRCH

プ ロ セ ス ID が pid の プ ロ セ ス が 見 つ か ら な か っ た 。

バ ー ジ ョ ン

migrate_pages() シ ス テ ム コ ー ル は Linux 2.6.16 で 初 め て 登 場 し た 。

準 拠

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

注 意

ラ イ ブ ラ リ に よ る サ ポ ー ト に つ い て は numa(7) を 参 照 。 呼 び 出 し 元 プ ロ セ ス の CPU 集 合 で 許 可 さ れ て い る ノ ー ド 集 合 を 取 得 す る に は 、 MPOL_F_MEMS_ALLOWED フ ラ グ を 付 け て get_mempolicy(2) を 使 う こ と 。 こ の 情 報 は 、 手 動 /自 動 に 限 ら ず CPU 集 合 の 再 構 成 に よ り い つ で も 変 更 さ れ る こ と が あ る 点 に 注 意 し て ほ し い 。

migrate_pages を 使 用 す る と 、 ペ ー ジ が 置 か れ る 場 所 (ノ ー ド ) が 、 指 定 さ れ た ア ド レ ス に 対 し て 設 定 さ れ た メ モ リ ー ポ リ シ ー (mbind(2) 参 照 ) や 指 定 さ れ た プ ロ セ ス に 対 し て 設 定 さ れ た メ モ リ ー ポ リ シ ー (set_mempolicy(2) 参 照 ) に 違 反 す る 状 況 に な る 可 能 性 が あ る 。 す な わ ち 、 メ モ リ ー ポ リ シ ー に よ る 制 約 は migrate_pages() に よ る 移 動 先 ノ ー ド の 選 択 に は 適 用 さ れ な い と い う こ と で あ る 。 ヘ ッ ダ ー フ ァ イ ル <numaif.h> は glibc に は 含 ま れ て お ら ず 、 libnuma−devel か 同 様 の パ ッ ケ ー ジ を イ ン ス ト ー ル す る 必 要 が あ る 。

関 連 項 目

get_mempolicy(2), mbind(2), set_mempolicy(2), numa(3), numa_maps(5), cpuset(7), numa(7), migratepages(8), numastat(8)

Linux カ ー ネ ル ソ ー ス の Documentation/vm/page_migration

こ の 文 書 に つ い て

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