MT の再構築時のサーバエラー("Premature end of script headers...")対策としては本来,メモリを増設するのが望ましい.しかし,オンボロ ThinkPad サーバに投資をするには懐が寂しすぎる.MT のEntriesPerRebuild 設定値を変えたりしてみても限界があるようである.
実記憶装置の増設はさしあたりペンディングとしても,仮想記憶を増やしておくのも手だてとしてあるわけで,FreeBSD Handbook に従ってスワップ領域を追加してみた.仮想記憶の容量は実記憶容量とのバランスを考えて設定しないと,ページングが頻発してパフォーマンスが低下する,いわゆるスラッシングを招く場合がある.そのあたりのリスクを受け容れるべきである.
FreeBSD 5.4 での拡張方法を整理しておく.ただし,この方法はバージョンに依存するので,4.X 系を使っている方は使えないことに注意.
まず追加するスワップ領域をディスク上に作成する./usr/swap0 として 256MB の容量とした.容量を変えたい場合は dd コマンド引数 count 回数値を MB 換算値に指定すればよい.次にファイルのパーミションを設定し,最後に mdconfig,swapon コマンドを発行すれば有効になった.
# dd if=/dev/zero of=/usr/swap0 bs=1024k count=256 # chmod 0600 /usr/swap0 # mdconfig -a -t vnode -f /usr/swap0 -n 0 && swapon /dev/md0
pstat コマンドで確認する./dev/md0 が機能していることがわかる.
# pstat -s Device 1K-blocks Used Avail Capacity /dev/ad0s1b 393216 218864 174352 56% /dev/md0 262144 38916 223228 15% Total 655360 257780 397580 39%
リブートは不要である.しかし,システムを停止するとこの swapon 操作は無に帰するので,次回リブートしたときも活きるよう,/etc/rc.conf に以下の行を追加しておく.
swapfile="/usr/swap0"
カーネルコンフィグレーションファイルにおいて md 疑似デバイスが有効になっている必要がある.これは標準の GENERIC カーネルにも組込まれているので,あまり気にせずともよさそうである.カスタマイズしている方は,「device md」の行があるか確認し,なければ追加してカーネル再構築を行う.
MT の EntriesPerPrebuild 値をデフォルトの 40 に戻して,再構築してみたが問題なさそうである.

Comments