描画速度改善(mtrr設定)とxengineの実験

パピーを名犬にするための技、テクニック

モデレータ: 暇人, YoN, nyu

返信する
heikichi
記事: 13
登録日時: 14/05/01(木) 11:21

描画速度改善(mtrr設定)とxengineの実験

投稿記事 by heikichi »

少し旧機を使っている方の参考になれば・・・ mtrr機能をPuppy 528上で実験してみました。
私のノートはCeleron 800MHzですが、mtrrもサポートしているようです。また、/proc/mtrrというファイルも存在しmtrrは使えそうです。
mtrrファイルは直接エディタ等でいじるのではなく端末からコマンドを使って書き込みます。(詳細は先人の方の各種記事をご参照ください)
mtrrでは、描画速度向上のために使用することが多いようです。端末からlspci -vと打ち込むと描画のメモリーアドレスやサイズがわかります。
(私のPCの場合)
# lspci -v
・・・・中略・・・・・
01:00.0 VGA compatible controller: ATI Technologies Inc Rage Mobility P/M AGP 2x (rev 64) (prog-if 00 [VGA controller])
Subsystem: NEC Corporation Device 8158
Flags: bus master, stepping, medium devsel, latency 66, IRQ 5
Memory at f5000000 (32-bit, non-prefetchable)
I/O ports at 9000
Memory at f4100000 (32-bit, non-prefetchable)
[virtual] Expansion ROM at 30000000 [disabled]
Capabilities: [50] AGP version 1.0
Capabilities: [5c] Power Management version 1
ここから得た情報に基づき次のように端末で打ち込むと設定できます。(サイズ4MBの例です。)
baseとsizeはパソコンにより違うので上記のように得られた情報に基づいてください。
echo "base=0xf5000000 size=0x400000 type=write-combining" > /proc/mtrr
sizeのところは、4MBなら0x400000、8MBなら 0x800000、16MB 0x1000000です。
このパソコンのWindowsの場合のビデオメモリは4MBなのですが、Puppyの場合は16MBまで使えるようになっていますが果たして本当でしょうか?
そこで、2MB,4MB,8MG,16MBの設定例で実験してみました。描画のベンチマークにはxengineをDebian用のxengine_1.11-7_i386.debをインストールして使用しました。このdebファイルは私の環境では追加ライブラリ等なしでもインストールでき動かすことができました。
結果、2MB,8MB,16MBの場合はwrite-combiningなしの場合とxengineの値はあまり変わりませんでした。(xengineは値が結構変動するので感じでしかないのですが。) size=4MBのときは、表示された値の比較ではいくばくか値の改善があるように見えました・・・
xengineの平均値: 940 rpm------> 1015 rpm 約8パーセント程度の増
感覚的ですが、平均値、最大値、表示されている値の範囲も全体に大きくなっているように見えました。まあ、1割弱の効果ですが。
というわけで、私はWindowsXPのビデオメモリサイズと同じ4MBで設定することにしました。

mtrrの設定は端末から次のように打ち込んで確認できます。
# cat /proc/mtrr
reg00: base=0x000000000 ( 0MB), size= 512MB, count=1: write-back
reg01: base=0x0f5000000 ( 3920MB), size= 4MB, count=1: write-combining

mtrrの設定は、再起動するとデフォルトに戻ってしまうようで起動時ごとに設定しなければならないようなので
私はrc.localに次のように1行付け加えております。(私のパソコンの場合の設定例)
echo "base=0xf5000000 size=0x400000 type=write-combining" > /proc/mtrr

私のパソコンの場合、lspciで返ってきたメモリサイズを設定できることはできるものの完全に有効に使えるわけでもなさそうで、これはチップセットなどのハード的な条件もあるのか、最も早くなる値を試してみて設定する方がよさそうです。旧機で大きな値を欲張ってもいけませんね。実験していてわかったのですが、どうやら設定するサイズは2の乗数である必要があり(2,4,8,16,32・・・)、6MBとか変な値を設定しようとすると受け付けてくれませんのでご注意を。

mtrr辺りは昔のWindows98~2000時代のk6-2等で設定ソフトで遊んだことを思い出します。
先人の記事では体感できる描画速度改善を報告している方もいらっしゃいますが、私の場合は体感とまではいきませんでした。これは、mtrrによるメモリ周りの改善よりもグラフィックアクセラレータ性能の方が影響する場合など、効果が実感しにくい場合もあるようですが、これは自己満足と探究心、趣味の世界ということで。
mtrrはいまどきの高性能CPUなどではもう不要かもしれませんが、旧機で楽しんでいらっしゃる方の参考になれば幸いです。
添付ファイルを見るにはパーミッションが必要です
返信する