Tips記事
» 2001年02月28日 00時00分 UPDATE

MTRR機能を使ってXの描画を高速化させたい

[木田佳克,ITmedia]

 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.

注目のテーマ