Express 5800 110Gd で 4GB メモリが使えた on IA-32
NEC Express 5800 110Gd(チップセット 3000)に,あえてメモリ空間食いな NVIDIA PCX 6600 を載せて調査。
CentOS 5.0 i386 で,non-PAE kernel の場合,
Linux version 2.6.18-8.el5 (mockbuild@builder4.centos.org) (gcc version 4.1.1 20 070105 (Red Hat 4.1.1-52)) #1 SMP Thu Mar 15 19:57:35 EDT 2007 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009dc00 (usable) BIOS-e820: 000000000009dc00 - 00000000000a0000 (reserved) BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 00000000c7e70000 (usable) BIOS-e820: 00000000c7e70000 - 00000000c7e7a000 (ACPI data) BIOS-e820: 00000000c7e7a000 - 00000000c7e7b000 (ACPI NVS) BIOS-e820: 00000000c7e7b000 - 00000000c8000000 (reserved) BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved) BIOS-e820: 0000000100000000 - 0000000138000000 (usable) Warning only 4GB will be used. Use a PAE enabled kernel. 3200MB HIGHMEM available. 896MB LOWMEM available. ... snip ... Memory: 3234772k/4194304k available (2043k kernel code, 39088k reserved, 846k data, 232k init, 2357696k highmem)
のように 3.2GB のメモリが使用可とのことですが,
BIOS-e820: 0000000100000000 - 0000000138000000 (usable)
という部分に一筋の光明が。
ということで PAE kernel でブートしてみる。と,
Linux version 2.6.18-8.1.6.el5PAE (mockbuild@builder4.centos.org) (gcc version 4 .1.1 20070105 (Red Hat 4.1.1-52)) #1 SMP Thu Jun 14 19:10:16 EDT 2007 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009dc00 (usable) BIOS-e820: 000000000009dc00 - 00000000000a0000 (reserved) BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 00000000c7e70000 (usable) BIOS-e820: 00000000c7e70000 - 00000000c7e7a000 (ACPI data) BIOS-e820: 00000000c7e7a000 - 00000000c7e7b000 (ACPI NVS) BIOS-e820: 00000000c7e7b000 - 00000000c8000000 (reserved) BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved) BIOS-e820: 0000000100000000 - 0000000138000000 (usable) 4096MB HIGHMEM available. 896MB LOWMEM available. ... snip ... Memory: 4145100k/5111808k available (2040k kernel code, 46236k reserved, 841k data, 232k init, 3275200k highmem)
おお,4GB使用可になりましたよ。
% free total used free shared buffers cached Mem: 4147812 404944 3742868 0 81964 208564 -/+ buffers/cache: 114416 4033396 Swap: 1044216 0 1044216
X もきちんとあがりますし(nvidia ドライバじゃなくて nv ドライバでしかテストしていませんが)。
ということで,IA-32 でも PAE on でうまく PCI memory remapping をハンドリングできる OS を使えば,無駄なくメモリを使用することができる環境はある,と。
本筋とは関係ないですが,このマシン,PCI Express にグラボ刺しててもオンボードな Volari が切り離されないのはちっと悲しいです。
2007/06/26 追記
Windows XP 32bit をインストールしてみましたが,やっぱり天使の取り分が発生し,有効メモリは 3GB になってしまいました。システム情報リソースでメモリを見たところ,32 bit な表記だったんで,やっぱり物理アドレス 32bit が限界みたいですね。