PAEカーネルを試してみた

x86プロセッサにはPAE(Physical Address Extension)と呼ばれる機能が1995年のPentium Proから導入されています。この機能はアプリケーションのプログラミング・モデルを変えずにOSにわずかな変更を施すだけで64GBの物理アドレスに対応する機能です。いいかえると、PAEに対応すれば32bit OSのままで64GBのメモリに対応できるようになります。
Microsoftはこの機能に対して冷淡で、コンシューマー用OSでは積極的に使うことをしませんでした。しかし、Linuxはこの機能に対応したカーネルを開発しており、Ubuntuでも使用できます。先日試したLinux 64bitカーネルは、arm用gcc (32bitアプリ)と互換性問題を起こしたので、PAEカーネルを試してみました。

$ sudo apt-get install linux-image-generic-pae linux-headers-generic-pae 
$ sudo update-grub2

Ubuntu 10.04では、カーネルはapt-getを使って簡単に導入できます。grub2をアップデートすればブートメニューにPAEカーネルが現れますのでそれを選択すればあっさりブートします。ドライバのアップデートなども不要で、実に簡単です。arm用gccもちゃんと動作しました。

$ cat /proc/meminfo

で、メモリ情報を表示すると、32bit geneircカーネルよりも1GBほどメモリ使用可能な量が増えていました。わずかな性能低下があるそうですが、体感できません。32ビット環境のままメモリ使用量を増やすうまいしかけです。
追記:
上のコマンドを修正しました。カーネル番号を指定すると、新しいカーネルがリリースされてもアップデートされません。上のように"linux-image-generic-pae"と指定すると、最新のカーネルがインストールされ、その後アップデートに追従します。

/* -----codeの行番号----- */