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 が異常に重くなる現象は,今のところ回避できている.