misima 旧仮名遣い・旧字変換サービスは大量の辞書を読み込む。高速化のためには出来る限りファイル入出力のオーバヘッドを減らしたい。そこでサイト運用において FreeBSD のメモリディスクに辞書などの misima リソースを格納して,インコアで処理できるようにしている。FreeBSD メモリディスクとはメモリに割り当てられたファイルシステム機能であり,昔の所謂 RAMDISK というのか,HDD に比べて高速なメモリにファイルを割り当てるものである。以下,そのオペレーションのメモ。
misima の辞書等のリソースは一式 /usr/
# [1] mkdir -p /usr/local/etc/misima # [2] cd /tmp # [3] dd if=/dev/zero of=newimage bs=1k count=5k # [4] mdmfs -F newimage -s 5m md0 /usr/local/etc/misima # [5] cd ~/src/misima/etc/ # [6] tar cf - . | ( cd /usr/local/etc/misima; tar xvf -)
[3] でまっさらな 5MB のファイル newimage を作成し(名前は任意。dd コマンドでゼロを 5MB = 1,024 x 5,120 バイト分書き込んでいるだけである),[4] でこれをメモリディスクデバイス md0 として /usr/
mount, df コマンドで確認すると,以下のような表示がされるはずである。
# mount ...... /dev/md0 on /usr/local/etc/misima (ufs, local, soft-updates) # df -k Filesystem 1024-blocks Used Avail Capacity Mounted on ...... /dev/md0 4718 3608 734 83% /usr/local/etc/misima
メモリ上のファイルシステムなので,当然ながらリブートすると跡形もなく消え去ってしまう。misima サービス起動時に上記オペレーションを自動的に実行するようなシェルスクリプトを書いて,運用するとよい。5MB くらいならキャッシュに入ってるって? ま,そうなんだけどね。