MacBook Pro 15(Late 2008)は公式では最大メモリ容量は4Gまでサポートなのだが、ファームウェアを最新のアップデート(MacBook Pro EFI ファームウェア・アップデート 1.8 )を適用すれば、最大 8G まで普通に認識し速度低下せずに使えるそうである。
2009年末位には結構高価だったのだが、最近値下がりして手ごろになってきたので、交換した。
次いで HDD も交換して SSD (TOSHIBA THNS256GG8BBAA)に入れ替えた。
まぁ、SSD に入れ替えたお陰でOSの起動もアプリの起動も機敏で、いい感じ。
空きメモリが増えてたので、ちょっと1Gくらいブラウザのキャッシュに割り当ててみた。
MacOSX では「hdid
」コマンドを使えば簡単にRAMディスクを作成できる。
ramlabel="RamDisk"
ramdev=$(hdid -nomount ram://10240)
diskutil eraseDisk HFS+ ${ramlabel} ${ramdev}
で、コイツを
rc.local
に仕込んでやれば、起動時にRAMディスクを作成できる。
なぜか上手く行かない。起動後に手打ちで入力すれば、出来るのだが、、、
はて、なんでだろうかぁ?
まぁ、ググっても明快な正解がわからない。。。
当てずっぽに答えれば、『「hdiejectd
」デーモンが起動して、正常に定常状態に無いときには「hdid
」は機能しない』っぽいのかなぁ。。。多分 SSD で起動が拙速になったからだと思うが、、、
上記の憶測のもとに rc.local を次のようにすれば、起動直後にユーザ用にRAMディスクに載ってる作業領域が作れるようになる。
#!/bin/sh
RAMSIZE=1024 # MBtyes
MP=/tmp/ramdisk
MYNAME=username
# Start hdiXXX
launchctl start com.apple.hdiejectd
sleep 5
# Make RamDIsk
RAMNUMSECTORS=$((${RAMSIZE}*2048))
ramdev=$(hdid -verbose -kernel -nomount ram://${RAMNUMSECTORS})
newfs_hfs -v ramdisk $ramdev
[ -d ${MP} ] || mkdir ${MP}
mount -t hfs -o nobrowse $ramdev ${MP}
# Finder.appで /Volume 以下で参照したいときは nobrowse を外す
# for ${MYNAME}
mkdir ${MP}/${MYNAME}
chown -R ${MYNAME}:${MYNAME} ${MP}/${MYNAME}
あとは、ログイン項目に、次のような キャッシュを調節するシェルスクリプトを埋め込んだ Automator アプリを登録すれば良い。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MP=/tmp/ramdisk
WP=${MP}/${USER}
if [ $(stat -f %d /tmp) -ne $(stat -f %d ${MP}) ]; then
MNTRD=yes
else
MNTRD=no
fi
ramdirlink() {
name=$1; dir=$2
if [ $MNTRD = yes ]; then
mkdir -p ${WP}/$name
rm -rf $dir
ln -sf ${WP}/$name $dir
else
[ -h $dir ] && rm -rf $dir
fi
}
ramfilelink() {
name=$1; base=$2; file=$3
if [ $MNTRD = yes ]; then
mkdir -p ${WP}/$name
cp $base ${WP}/$name/$(basename $file)
ln -sf ${WP}/$name/$(basename $file) $file
else
[ -h $file ] && rm -f $file
fi
}
# for WebBrowser
ramdirlink Caches/Chrome ${HOME}/Library/Caches/Google/Chrome
ramdirlink Caches/Firefox ${HOME}/Library/Caches/Firefox
# 予め Safari でキャッシュを空にした Cache.db を CacheBase.db として保存しておく。
ramfilelink Caches/Safari \
${HOME}/Library/Caches/com.apple.Safari/CacheBase.db \
${HOME}/Library/Caches/com.apple.Safari/Cache.db
# for Xcode
ramdirlink XcodeCaches ${HOME}/Work/XcodeCaches
まぁ、サクサクになったのかなぁ?
追記 (2010/11/06)
コードをちょっとだけ整理して、Xcode と TMPDIR もRAMDISKにのせてみた。
追記 (2010/12/23)
TMPDIR もRAMDISKに載せると、どうも ramdisk のアクセス出来ない現象が時々発生し、キャッシュを載せている Chromeなどのブラウザが固まって、まともに使えない結果になる。。。どうも TMPDIR は ramdisk に載せて運用するのは難しそうである。仕方がないので、設定を削除してみた。。。ここ1ヶ月は、安定してるっぽいので正解かな。。。