Man page - migrate_pages(2)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

MIGRATE_PAGES

名 前
書 式
説 明
返 り 値
エ ラ ー
バ ー ジ ョ ン
準 拠
注 意
関 連 項 目
こ の 文 書 に つ い て

名 前

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_nodes new_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 に エ ラ ー を 示 す 値 を 設 定 す る 。

エ ラ ー

EFAULT

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

EINVAL

The value specified by maxnode exceeds a kernel-imposed limit. Or, old_nodes or new_nodes specifies one or more node IDs that are greater than the maximum supported node ID. Or, none of the node IDs specified by new_nodes are on-line and allowed by the process’s current cpuset context, or none of the specified nodes contain memory.

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.rst

こ の 文 書 に つ い て

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