Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all
名前
numa - 非対称型メモリーアーキテクチャーの概要
説明
非対称型メモリーアクセス (Non-Uniform Memory Access; NUMA) は、 メモリーが複数のメモリー ノードに分割されているマルチプロセッサシステム のことである。メモリーノードへのアクセス時 間は、アクセス元の CPU と アクセス先のノードの相対的な位置関係に依存する (これに対し、対称 型マルチプロセッサシステムでは、どの CPU から どのメモリーへのアクセス時間も同じである)。 通常は、 NUMA システムの各 CPU にはローカルのメモリーノードがあり、 そのメモリーノードに は、他の CPU のローカルノードや全ての CPU で 共有されるバス上のメモリーよりも早くアクセス することができる。 NUMA システムコール Linux カーネルには、次に示す NUMA 関連のシステムコールが実装されている: get_mempolicy(2), mbind(2), migrate_pages(2), move_pages(2), set_mempolicy(2). ただし、アプリケーションは通 常は libnuma が提供するインターフェース を使用すべきである。下記の「ライブラリによるサポー ト」を参照。 /proc/[number]/numa_maps (Linux 2.6.14 以降) このファイルは、プロセスの NUMA メモリーポリシーと割り当てに関する 情報を表示する。 各行に、そのプロセスが使用しているメモリー領域に関する情報が表示される。その他の情報 — そ のメモリー領域に適用されているメモリーポリシーや、そのページがどのノード上に割り当てられて いるか、など — もあわせて表示される。 numa_maps は読み出し専用のファイルである。 /proc/<pid>/numa_maps から読み出しが行われる と、 カーネルはそのプロセスの仮想アドレス空間をスキャンし、 メモリーの使用状況を報告する。 プロセスのメモリー領域の情報が 1 行に 1 領域で表示される。 各行の最初のフィールドはメモリー領域の開始アドレスを示す。 このフィールドは /proc/<pid>/maps ファイルの内容と対応している。 /proc/<pid>/maps には、メモリー領域の末尾 のアドレスや、アクセス許可や共有といった他の情報も含まれる。 2 番目のフィールドは、 そのメモリー領域に現在適用されているメモリーポリシーを示す。 適用さ れているポリシーは、 必ずしもそのプロセスがこのメモリー領域に対して設定したポリシーとは限 らない点に注意すること。 特に、 プロセスがその領域に対して「デフォルト」ポリシーを設定した 場合、その領域に適用されるポリシーはプロセスのポリシーとなり、それが「デフォルト」ポリシー となる場合もあればそうでない場合もある。 行の残りの部分には、そのメモリー領域に割り当てられたページに関する情報が入る。以下に詳細を 示す。 N<node>=<nr_pages> <node> に割り当てられているページ数。 <nr_pages> には、 そのプロセスが現在マッピン グしているページだけが含まれる。 ページの移動やメモリーの再利用により、 このメモ リー領域に関連付けられているが、 一時的にマッピングされていないページが存在する場合 がある。 プロセスがそれらのページを参照しようとした後には、 これらのページは再び現 れる可能性がある。 メモリー領域が共有メモリーやファイルマッピングの場合には、 その メモリー領域内に別のページを他のプロセスがマッピングしている場合もある。 file=<filename> そのメモリー領域に関連付けられているファイル。 ファイルがプライベート (非公開) で マッピングされている場合、 書き込みアクセスがあると、 このメモリー領域に書き込み時 コピー (Copy-On-Write) ページが生成されることがある。 これらのページは無名ページ (anonymous page) として表示される。 heap ヒープに使用されているメモリー範囲。 stack スタックに使用されているメモリー範囲。 huge ヒュージメモリーの範囲。表示されるページ数は、 通常の大きさのページではなく、ヒュー ジページの数である。 anon=<pages> メモリー範囲内の無名ページ (anonymous page) の数。 dirty=<pages> dirty (変更された) ページの数。 mapped=<pages> マッピングされているページ数。 dirty および anon のページ数と異なる値の場合に表示さ れる。 mapmax=<count> スキャン中に検出した mapcount (一つのページをマッピングしているプロセス数) の最大 値。 この値は、 そのメモリー領域でどの程度の共有が行われているかの指標として使うこ とができる。 swapcache=<count> スワップデバイスに対応するエントリーが存在するページ数。 active=<pages> アクティブリストに入っているページ数。 このフィールドが表示されるのは、 値がこのメ モリー領域のページ数と異なる場合だけである。このフィールドが表示されるということ は、 このメモリー領域に、まもなくスワッパ (swapper) によりこの領域から削除される可 能性がある inactive なページが存在することを意味する。 writeback=<pages> 現在ディスクに書き出されているページ数。
準拠
NUMA インターフェースについて規定している標準はない。
注意
Linux の NUMA システムコールと /proc インターフェースは、カーネルが 設定オプション CONFIG_NUMA を有効にして作成されている場合のみ、利用 可能である。 ライブラリによるサポート システムコールの定義を得るには -lnuma でリンクすること。 libnuma と必要なヘッダーファイル <numaif.h> は numactl パッケージで提供されている。 ただし、アプリケーションはこれらのシステムコールを直接利用すべきでない。 推奨される方法 は、numactl パッケージの numa(3) の関数群が提供する 高レベルインターフェースの利用である。 numactl パッケージは ⟨ftp://oss.sgi.com/www/projects/libnuma/download/⟩ で入手できる。 こ のパッケージが収録されている Linux ディストリビューションもある。 ディストリビューションに よっては、開発用のライブラリとヘッダーファイルは 別パッケージ numactl-devel で提供されてい る。
関連項目
get_mempolicy(2), mbind(2), move_pages(2), set_mempolicy(2), numa(3), cpuset(7), numactl(8)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。