Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all bug

名前

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