Google Code Prettify

2010年11月9日

Google Chrome が吐き出すログをちょっとだけ片付ける

Mac OSX 上の Google Chrome は、何故か system.log にデバックか実装上の何かしらの情報を沢山吐く。

システムの他の問題を調査するときジャマ臭い。。。なんとかならんのかなぁ。

syslogd には高度なフィルタ機能が実装されていないので、system.log に書き出される行に関しては何ともしがたい。

但し、MacOSXでは syslogd とは別に asl という仕組みが並行して導入されている。「コンソール.app」 のデータベース検索以下の情報は asl の仕組みから取得している。

asl には、結構便利なフィルタ機能が実装されている。なので、件のログを収集しないようにするには、/etc/asl.conf の最後に次の設定を付け加えれば良さそうである。

# /etc/asl.conf に追加
# ommit com.google.Chrome
? [S= Sender com.google.Chrome] ignore

追記

良く考えれば、Chromeからのログを除外した「新規データベース検索」を登録しとけば良かったのかぁ。。。

2010年11月6日

MacOSXでRAMディスク上にブラウザのキャッシュを割り当てる

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 アプリを登録すれば良い。

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
view raw gistfile1.sh hosted with ❤ by GitHub

まぁ、サクサクになったのかなぁ?

追記 (2010/11/06)

コードをちょっとだけ整理して、Xcode と TMPDIR もRAMDISKにのせてみた。

追記 (2010/12/23)

TMPDIR もRAMDISKに載せると、どうも ramdisk のアクセス出来ない現象が時々発生し、キャッシュを載せている Chromeなどのブラウザが固まって、まともに使えない結果になる。。。どうも TMPDIR は ramdisk に載せて運用するのは難しそうである。仕方がないので、設定を削除してみた。。。ここ1ヶ月は、安定してるっぽいので正解かな。。。

久しぶりの投稿

かなり期間が空いてしまったが、ブログを再開してみようと思う。 2013年3月が直前の投稿だったが、頻繁に更新していた時期が 2011年11月までなので、8年間ぶりとなる。 8年間なにをしていたのかと言えば、2回転職して未だにIT技術者の職を得ている。 その...