MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

日本発のリナックス企業、ミラクル・リナックスで奮闘する社員のブログです。

ミラクル関連リンク

採用情報

サイト検索

最近のトラックバック

2008年3月

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

« アシスタント日誌:大雪の成人式 | メイン | あけましておめでとうございます »

Linux と NUMA その 0.2

年末の重い仕事が片付き、年も明けたところで心機一転、本題に突入です。
今回はNUMAの実機を用意しました。Dual Core Opteron を 2基搭載した(つまり論理プロセッサ数 4の)マシンです。

開発中の MIRACLE LINUX V4.0 (Asianux 2.0) SP2 for x86-64 のβ版をベースに、upstream から stable の最新 2.6.19.1 を持ってきてビルド、ブートしました。
さっそく dmesg コマンドでブートログを眺めていきましょう。

Linux version 2.6.19.1 () () #1 SMP Fri Jan 5 16:30:53 JST 2007
Command line: ro root=LABEL=/
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009d400 (usable)
BIOS-e820: 000000000009d400 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000d2000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cff60000 (usable)
BIOS-e820: 00000000cff60000 - 00000000cff72000 (ACPI data)
BIOS-e820: 00000000cff72000 - 00000000cff80000 (ACPI NVS)
BIOS-e820: 00000000cff80000 - 00000000d0002000 (reserved)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fec00000 - 00000000fec00400 (reserved)
BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000230000000 (usable)
Entering add_active_range(0, 0, 157) 0 entries of 3200 used
Entering add_active_range(0, 256, 851808) 1 entries of 3200 used
Entering add_active_range(0, 1048576, 2293760) 2 entries of 3200 used
end_pfn_map = 2293760

BIOS が E820 function で返した物理メモリマップによると usable 領域は 3つで、以下の構成です。

アドレス ページフレーム番号 サイズ
開始 終了 開始 終了
(a) 0 0x9d400 0 157 628kB
(b) 0x100000 0xcff60000 256 851,808 3,326MB
(c) 0x100000000 0x230000000 1,048,576 2,293,760 4,864MB

物理的には、DIMM スロットに 2GBのモジュールが4本挿してある匡体です。
また、この時点ではメモリは全てノード0から認識されています。

SRAT: PXM 0 -> APIC 0 -> Node 0
SRAT: PXM 0 -> APIC 1 -> Node 0
SRAT: PXM 1 -> APIC 2 -> Node 1
SRAT: PXM 1 -> APIC 3 -> Node 1

ここでは、ACPI の SRAT (System Resource Affinity Table) からプロセッサのAPIC番号とノード番号を読みだしています。

SRAT: Node 0 PXM 0 0-a0000
Entering add_active_range(0, 0, 157) 0 entries of 3200 used
SRAT: Node 0 PXM 0 0-d0000000
Entering add_active_range(0, 0, 157) 1 entries of 3200 used
Entering add_active_range(0, 256, 851808) 1 entries of 3200 used
SRAT: Node 0 PXM 0 0-130000000
Entering add_active_range(0, 0, 157) 2 entries of 3200 used
Entering add_active_range(0, 256, 851808) 2 entries of 3200 used
Entering add_active_range(0, 1048576, 1245184) 2 entries of 3200 used
SRAT: Node 1 PXM 1 130000000-230000000
Entering add_active_range(1, 1245184, 2293760) 3 entries of 3200 used
NUMA: Using 28 for the hash shift.
Bootmem setup node 0 0000000000000000-0000000130000000
Bootmem setup node 1 0000000130000000-0000000230000000

SRATはメモリがどのノードに所属するかの情報も持っています。ノード毎に 4GB 搭載されていることが検出されています。

Zone PFN ranges:
  DMA             0 ->     4096
  DMA32        4096 ->  1048576
  Normal    1048576 ->  2293760
early_node_map[4] active PFN ranges
    0:        0 ->      157
    0:      256 ->   851808
    0:  1048576 ->  1245184
    1:  1245184 ->  2293760

メモリのゾーン分けが行なわれます。
上の表の usable 領域 (a) はゾーンDMAに、領域(b)はゾーンDMAとDMA32に、領域(c)はゾーンNormal に割り当てられます。さらに領域(c) はノード0とノード1とに分割されます。ゾーン DMA32 は以前紹介した x86_64 専用のゾーンです。

On node 0 totalpages: 1048317
  DMA zone: 64 pages used for memmap
  DMA zone: 1086 pages reserved
  DMA zone: 2847 pages, LIFO batch:0
  DMA32 zone: 16320 pages used for memmap
  DMA32 zone: 831392 pages, LIFO batch:31
  Normal zone: 3072 pages used for memmap
  Normal zone: 193536 pages, LIFO batch:31
On node 1 totalpages: 1048576
  DMA zone: 0 pages used for memmap
  DMA32 zone: 0 pages used for memmap
  Normal zone: 16384 pages used for memmap
  Normal zone: 1032192 pages, LIFO batch:31

ノード毎にゾーン分けが行なわれました。ノード 0 および 1 のページフレーム数は以下のようになりました。

ゾーン ノード
0 1
DMA 64 + 1,086 + 2,847 = 3,997 0
DMA32 16,320 + 831,392 = 847,712 0
Normal 3,072 + 193,536 = 196,608 16,384 + 1,032,192 = 1,048,576

ゾーンDMAとDMA32はノード0にのみ存在することがわかりますね。

ブートログで NUMA の構成を表示するのは以上で全てのようです。タスクスケジューラも NUMA に合わせて構成されているはずですが、ブートログには特に出力されないようです。これはいずれコードから追っていきましょう。

今回は以上です。

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/4447/6721313

このページへのトラックバック一覧 Linux と NUMA その 0.2:

» Linux と NUMA その 0.2.1 トラックバック ペンギン飼育係が見た
前回実機まで確保して、このお題もようやく軌道に乗り始めたと思ったのも束の間、その [続きを読む]

コメント

コメントを投稿

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.