Firefox、メモリ、キャッシュ、SSD、RAMディスク
2009年12月14日 パソコン(PC)
Core i7、DDR3メモリトリプルチャンネル6GB、Intel SSD、Windows7。この環境なら、何かのアプリケーションが重くていらだつことはもうないだろうと思っていたあの頃。
SSDの読み込みの速さによる、Windows自体の起動の速さ、アプリケーションの起動の速さにも慣れ、残ったのはFirefoxの動作の重さ…。
まさかWebブラウジングするだけの処理がここまで重いとは…。前の環境で重かった画像処理は快適になったのに、なぜブラウザがここまで重いのか…。
「FirefoxのAutoPagerizeが重かった」の後、ページ先読み用アドオンは「AutoPager :: Add-ons for Firefox」に変えていました。PCのスペックも上がったことで、再びAutoPagerizeに戻していたわけです。でも、やっぱり重い。Greasemonkey版やExtension版のAutoPagerize、それからFirefox3.6beta版など、いろいろ試してみました。それでも重い。
ただ、この重さはAutoPagerizeそのものの処理というよりも、Firefoxとメモリやキャッシュの使い方による問題だと推測できました。Firefoxを起動して何ページもブラウジングしていると、ひたすらメモリを消費し続け、メモリ消費量が500MBを越えた辺りから、動作がもっさりしてきます。マウスジェスチャの反応が明らかに遅くなり、ページの読み込みがとてつもなく重くなります。メモリは6GB積んであるので、500MBくらい使われてもどうってことはないはずなのに、なぜか動作が重くなっていきます。これは我慢できませんでした。
というわけで、Firefoxの動作を改善させた時のメモでも。
Firefoxの動作が重くなるのは、画像ページを大量に読み込んだ後など、メモリを大量に消費した時。
たとえば、写真共有サイト:photohitoなどで調子に乗ってAutoPagerizeで何十ページもスクロールしていくと、とてつもなく動作が重くなっていました。
タブを閉じてもメモリが解放されず、一度Firefoxの動作が重くなってしまうと、もうFirefoxを終了させるしかありませんでした。
Firefoxのオプションや「about:config」からメモリ消費量の設定をしても、なぜかうまくいきませんでした。Windows7 64bit版という環境がメモリリークを発生させてしまっているのか、Firefoxの動作がそれで正しいのかはわかりませんでしたが。
それで、メモリやキャッシュ関係がおかしいと思い、「about:cache」で動きを見ていると、どうやらDisk cacheを使っているようでした。「about:config」でメモリキャッシュのみに変更させておいたはずが機能していません。設定を変えても、やはりDisk cacheを使ってしまいます。おそらく犯人はこれだと予想を付けました。Firefoxが新しいページや画像を読み込む度にSSDへ書き込みをしてしまい、そのせいでSSDがプチフリーズするような状況になっているようだと推測しました(Intel製SSDはプチフリーズしにくいはずなのですが…)。
「Firefox が使用しているメモリを定期的に開放する MetaboFix」とやらもインストールしてみたりしましたが、このソフトは全く意味がありませんでした。実メモリを固定ディスクにswapするだけ、つまり本来メモリに記憶させる部分をいちいちSSDに書き込んでいるので、むしろ今回の場合は逆効果にしかなりません。
そこで一度、FirefoxをSSDからHDD領域へとインストールし直したりもしました。もう一度Firefoxの設定を確認してみたところ、「Disk cache device」のディレクトリを変更できることに気づいたので、「Cache Directory」を変更することにしました。
32bit版の頃は使っていたRAMディスクの作成です(この頃はGavotte Ramdiskを使っていました)。Windows7 64bit beta版にしたときに、64bit版対応RAMディスクが見つからず、そのまま正式版Windows7を導入した後も探していませんでした。今回、もう一度64bit版対応RAMディスクを探して試してみることにしました。
あっさりDataramの「RAMDisk」が見つかったので、試してみることに。インストール、設定は簡単。動作も問題なし。適当に512MBのキャッシュ用領域を作って完了です。
続いてFirefoxの設定。「about:config」から「browser.cache.disk.parent_directory」を今作ったRAMディスクの領域に割り当て。
速い!
ページ読み込みの体感速度が数倍速くなったように感じました。1ページの読み込みでもスピードが違います。ページを大量に開き、メモリをたくさん消費するような場合でも、以前ほどもっさりせず、普通に使えるようになりました。やはりFirefoxが新しいページを開いた時に、Disk cacheとしてSSDへ毎回書き込んでしまうことが問題だったようです。メモリは6GB積んであるので、キャッシュ用に512MB使っても問題ありません。ようやく効果的なメモリの使い方ができるようになりました。
いろいろと長くなりました。最後に簡単なまとめでも。
Firefoxを使う場合は、browser.cache.disk.parent_directoryにRAMディスク領域を割り当てると動作が速くなる!終わってみれば、なんだか当たり前の結果となりました。
SSDの場合は、Firefoxの仕様上、特に書き込みの回数が問題となってきてしまいます。RAMディスクを使うことで、動作速度が大幅に改善されます。
Firefoxをメインのブラウザに使用していて、実メモリがある程度余っている人なら、Firefox用にRAMディスクでキャッシュ用のディレクトリを作っておくと動作が快適になります。
関連リンク
- Windows7のクイック起動を昔風にする、他TIPS
- Windows7って速いの?
- Windows7発売目前にしてメモリ価格が急騰
- ACアダプタを4個つなげるケーブル
- FirefoxのAutoPagerizeが重かった
- サムスン製のHDDは3度煙を吐く
- 10秒で余ったHDDを外付け化できる「ガチャポンパッ!」
- autopagerizeが効かなくなったときの対処
- ATOKなら3倍速く打てる!
- 違う、我々が欲しいのは電源をONにした瞬間起動するマシンだ。
- 「シリコンバレーなら日本の30倍儲かる」と近藤社長