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