Linuxカーネル2.2以降では,CPUがPentiumPro以降やK6プロセッサなどであれば,MTRR (Memory Type Range Register) 機能が利用できるようになった。MTRRを利用すれば,X Windowのパフォーマンス向上が期待できるため試してみる価値があるだろう。
まず最初に,次のコマンドを入力して,CPUおよびカーネルがMTRRをそれぞれサポートしている状態かを確認しよう。
# cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 5 model : 8 model name : AMD-K6(tm) 3D processor stepping : 12 cpu MHz : 367.499334 fdiv_bug : no hlt_bug : no sep_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr mce cx8 sep mtrr pge mmx 3dnow bogomips : 734.00 |
mtrr項目が見つかったら,続いて「mtrr」ファイルが存在するかを確認しよう。
# ls /proc/mtrr |
mtrrファイルが存在しない場合には,MTRRサポートオプションを付けてカーネルを再コンパイルする必要がある。オプションは,次の個所だ。
Processor type and features ---> [*] MTRR (Memory Type Range Register) support |
/proc/mtrrファイルが存在したならば,次に持っているグラフィックカードに特化した設定を書き込む必要がある。設定に必要なのは,グラフィックカードのメモリアドレス,およびRAM容量だ。これを知るためには,次のように指定してX Windowの起動時にログ記録をするのがよい(ファイル名「xlog」は任意の名称で構わない)。
$ startx 2> xlog |
catなどで書き込まれたxlogファイルの中身を見ると,次のような行が見当たるはずだ。ここでは,RIVA TNT2の場合である。
(--) SVGA: PCI: NVidia Riva TNT2 rev 17, Memory @ 0xee000000, 0xe20000000 |
この行の中で最後のメモリアドレスに注目しよう。ここでは,「0x20000000」である。さらに,グラフィックカードのRAM容量も知っておく必要がある。一般的な値であれば,次の通りだ。後述する「size=」には,次の値を当てはめる。
・4Mバイト …… 0x400000
・8Mバイト …… 0x800000
・16Mバイト …… 0x1000000
・32Mバイト …… 0x2000000
最後に,ここまで調べた値をmttrファイルに書き込もう。手順は次の通りだ。ここでは,グラフィックカードが「RIVA TNT2」,RAM容量が「32Mバイト」であることを想定してる設定だ。
# echo "base=0xe2000000 size=0x2000000 type=write-combining" >| /proc/mtrr |
念のため設定をクリアする方法も紹介しておこう。次のように入力すれば,mttr内の設定が無くなる。
# echo "disable=1" > /proc/mtrr # cat /proc/mtrr reg00: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1 |
Copyright © ITmedia, Inc. All Rights Reserved.