LinuxではNUMA(Non Uniform Memory Access) 向けに、メモリ割付論理を切り替えるAPIが用意されている。 set_mempolicy() get_mempolicy() mbind() の3つが、NUMA APIである。 ただし、そのまま使うには、かなり不親切なAPIなので、 libnuma とか numctl コマンドを使うのが一般的のようだ。 ここではnumactlコマンドの使い方を解説する。 (むしろ自分用備忘録) 0.カーネルがNUMA APIをサポートしているか確認 $ numactl --show policy: default preferred node: 0 interleavemask: interleavenode: 0 nodebind: 0 1 2 3 4 5 6 7 membind: 0 1 2 3 4 5 6 7 なにもせずに、
もともと NUMA の概念自体は知らないこともなかったのですが、対象となるハードウェア実装を知らないまま、ただただソースコードを読むのは苦痛です。というわけで、まずは実装の情報を探しました。Linux のプラットフォームで NUMA といえば Opteron が思い浮かびます。早速 AMD のサイトを探してみると "Performance Guidelines for AMD Athlon™ and AMD Opteron™ ccNUMA Multiprocessor Systems" という資料がありました。このドキュメントと、このドキュメントが紹介している参考文献[1] は、ダイアグラムつきで Opteron NUMA の実装を分り易く説明しています。 そういえば、昔、DEC Alpha プロセッサによる NUMA システムの構成図を見たことがありました(そんなことを今になって思い出し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く