Google Chrome が重いので RAMディスク を使って高速化!
Google Chrome がたまにすごく重くなる.ディスクアクセスが原因のようだ.そこでキャッシュ(消えても問題ないファイル群)~/.cache/google-chrome を RAMディスク /dev/shm 以下に移動したのだが,それでも改善されない.そこで,設定ファイル~/.config/google-chrome も RAMディスク 上に置くことにした.
# 追記@Sep.04,2010:スクリプト修正.
RAMディスクというのは,メモリをハードディスクのように扱えるようにしたメモリ領域のこと.なので,読み書きがハードディスクよりも速い.
そこで,Google Chrome(以下 chrome)が頻繁に書き換えるファイルを RAMディスク 上に置いてしまって,chrome を軽くする.
注意点は,RAMディスク 上のファイルはシャットダウンとともに消えてしまうため,設定ファイルを chrome 終了時にハードディスクに移動しなければならないこと.
chrome が利用するファイルは,どうやら ~/.cache/google-chrome と ~/.config/google-chrome のようだ.前者はキャッシュファイルで消しても問題なく,後者は設定ファイルで消すとブックマークなどの情報が失われる.そこで,chrome 起動前にこれらのデータを RAMディスク に移動し,chrome 終了時にもとに戻す(ただしキャッシュは消す)ようなスクリプトを書いた.
スクリプト xchrome
# 二重起動しないように修正;既にchromeが起動されている場合,終了させるように修正.@Sep.04,2010
#!/bin/bash exename=$(basename $0) pgres=$(pgrep $exename) if [ "$(echo "$pgres" | grep -v $$)" != "" ];then echo "$exename is already running" exit 1 fi while [ $(ps -C chrome --no-headers | wc -l) -gt 0 ];do killall chrome sleep 0.5 done username=akihiko ramdisk=/dev/shm gcache=~/.cache/google-chrome gconfig=~/.config/google-chrome rcache=$ramdisk/$username/google-chrome/cache rconfig=$ramdisk/$username/google-chrome/config tmpdir=/tmp/$username/google-chrome if [ -e $tmpdir ];then rm -r $tmpdir fi mkdir -p $tmpdir if [ -e $ramdisk ];then if [ -e $ramdisk/$username/google-chrome ];then mv $ramdisk/$username/google-chrome $tmpdir/ram.bak fi mkdir -p $ramdisk/$username/google-chrome else echo "ramdisk not found: $ramdisk" exec google-chrome exit 0 fi if [ -e $gcache ];then # cp -av $gcache $tmpdir/cache.bak #キャッシュのバックアップを取る mv $gcache $rcache else mkdir $rcache fi ln -s $rcache $gcache if [ -e $gconfig ];then # cp -av $gconfig $tmpdir/config.bak #設定のバックアップを取る mv $gconfig $rconfig else mkdir $rconfig fi ln -s $rconfig $gconfig google-chrome rm $gcache rm $gconfig # mv -i $rcache $gcache #キャッシュを残す rm -rv $rcache #キャッシュを消す mv -v $rconfig $gconfig
使い方: ./xchrome で実行するだけ.
安心のために設定ファイルのバックアップを取る場合は,
# cp -av $gconfig $tmpdir/config.bak #設定のバックアップを取る
のコメントアウトを外す.ただし,起動が遅くなることに注意.
終了時にキャッシュもハードディスクに移動する場合は,最後らへんの
# mv -i $rcache $gcache #キャッシュを残す rm -rv $rcache #キャッシュを消す
を
mv -i $rcache $gcache #キャッシュを残す # rm -rv $rcache #キャッシュを消す
と変更する.でも,キャッシュファイルのサイズが大きくなるとメインメモリを圧迫するので,おすすめできない.
課題
- 終了に時間が掛かる(RAMディスクからハードディスクへファイルを移動するため).
- 起動が少し遅くなった(が,そんなに気にならない.RAMディスクへの移動は速い).
- RAMディスクを使いすぎて困ったことにならないだろうか?(不安)
ともあれ,たまに chrome が異常に重くなる現象は,今のところ回避できている.