Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_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 にエラーを示す値を設定する。

エラー

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

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