Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

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

Linux                                              2012-08-01                                   MIGRATE_PAGES(2)