FreeBSD on ThinkPad i1620
〜 ThinkPad i1620 で、FreeBSD を使おう 〜


FreeBSD 設定編   〜快適環境のためのTips〜


もっと、快適な環境を得るためのTips


SOFTUPDATEを有効にする

SOFTUPDATEを有効にすると、ディスクの信頼性がUPするそうです。
速度もあがるそうなので、さっそく有効にしておきましょう。

FreeBSDの起動時に、Booting [kernel] in 9 secords ………などとメッセージが出ている間に、何かキーを押します。
すると、ok> というプロンプトが出るので、boot -s と入力して、シングルユーザモードにします。
その後で、

# tunefs -n enable /dev/ad0s3a
と入力して、リブートします。( /dev/ad0s3a のところは、適宜インストールした領域に読み替える)
# reboot
リブート後に、mount コマンドでマウント状況をチェックしましょう。
SOFTUPDATEが有効になっていると、mount  コマンドで
/dev/ad0s3a on / (usf, local, softupdate)
のように表示されます。


MTRR を使って、Xを高速化する (for XFree86 3.3.6)

今回インストールしたSVGAサーバは、描画速度が遅いらしいです。XFree86 のバージョンを 4.1.0 とかの最新のものに変えれば、高速化できるそうですが。
でもここでは、他のものを全くインストールしたりせずに、劇的にXの描画速度を上げる技を紹介します。
 

まず、CPUが MTRR (Memory Type Range Register) とかいうのをサポートしていないとダメらしいので、それを確認します。dmesg で、起動時のメッセージを見てみましょう………

% dmesg
    :
    :
CPU: Pentium III/Pentium III Xeon/Celeron (312.55-MHz 686-class CPU)
 Origin = "GenuineIntel" Id = 0x683 Stepping = 3
 Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
    :
    :
なにやら、真中あたりにMTRRの文字が見えるので、多分大丈夫でしょう。
 

次に、ビデオカードのメモリ領域を調べます。これには、Xの起動ログをみます。

% startx >& x.log
として、Xを起動し、x.log ファイルをじっくり見てみましょう………
% cat x.log
    :
 (--) SVGA: PCI: ATI Mach64 Mobility rev 100, Memory @ 0xf5000000, 0xf4100000, I/O @ 0x3000
    :
    :
 (--) SVGA: videoram: 4096k
    :
 使用しているメモリのベースアドレスは 0xf5000000 と 0xf4100000 (なんで2個もあるの?)、
 メモリサイズは 4MB、 ということが分かりました。
 

では、ここで memcontrol コマンドを使用します。基本的な使い方は

 /usr/sbin/memcontrol set -b ベースアドレス -l サイズ -o 識別子 write-combine
です。ベースアドレス、サイズは先ほど調べたビデオカードのものを、識別子は7文字以内で適当な名前をつけます。こんな感じですね。
 # memcontrol set -b 0xf5000000 -l 0x400000 -o SVGA write-combine
実際に設定されたかどうか確認してみましょう。
 # memcontrol list
 :
 :
 f5000000/400000 SVGA write-combine active
先ほどの設定が最後の行にでてきました。これでOKです。

早速、xengine などで速度UPを体感してみましょう。
ちなみに、i1620 の SVGAサーバ (16bpp) で 1400rpm ほどだったのが、3000rpm以上になりました。

なお、この設定を解除するには、

 # memcontrol clear -o SVGA
 です。-o の後には、設定時につけた識別子を指定します。
 
 

では、起動時に自動的にこの設定を行なうようにしましょう。

FreeBSDでは、起動時に /usr/local/etc/rc.d/*.sh を実行するようになっているので、
rootになって、/usr/local/etc/rc.c/mtrr.sh などというような名前でファイルを作成します。
ファイルの内容は以下のような感じでいいでしょう。

なお、起動時にはこのコマンドに、引数 start が、シャットダウン時には引数 stop が与えられて実行されることになっているみたいです。なので、引数 start で MTRRを有効に、引数 stop で MTRR を解除するようにしてみましょう。
(なお、わたしは、シェルスクリプトを知らないので、他のファイルを真似して、適当に書いてみました)。

 
#! /bin/sh

case $1 in
start)
    echo MTRR
    memcontrol set -b 0xf5000000 -l 0x400000 -o SVGA write-combine
    ;;
stop)
    memcontrol clear -o SVGA
    ;;
*)
    echo "usage: `basename $0` {start|stop}"
    exit 1;
    ;;
esac

あとは、このファイルに実行パーミッションをつけておきます。
#chmod +x /usr/local/etc/rc.c/mtrr.sh
これでOK。再起動して確認してみましょう。
 
余談)
ところで、
 # memcontrol set -b 0xf5000000 -l 0x800000 -o SVGA write-combine
 のように、メモリサイズを倍の 8M 指定して見ました。これでも、エラーは出ません。
 この時、なんと xengine の結果が、4200rpm 以上になるではありませんか。
早速、これをデフォルトの設定にしましょう。( 大丈夫かなあ???)

「ホームページ」に戻る


Showzoh Fukunaga
メールはこちら……… fukuchan@mh1.117.ne.jp