Core i7と Windows7(64bit)ノートとFirefoxの憂鬱:スーパーフェッチによるメモリ不足と熱暴走の問題

新しいノートPC、Dell Studio 1557を導入してから3ヶ月が過ぎました。

今回久々のPC更新ということで、はじめてのクワッドコア Intel Core i7、Windows7 64bit版、メモリ6GBと最高のマシンスペックで固めてみました。

Intel Core-i7搭載 Windows7 DELLノートPC Studio15を購入しました ([の] のまのしわざ)

燦然と輝く インテル Core-i7とWindows7のロゴマーク!!

そうです今回は奮発して購入しましたよ、ハイエンドノートPC。メモリは6GB、ディスプレイはLEDバックライト装備の1920x1080フルハイディフィニション。ブルーレイドライブ装備に、キーボードバックライトまでつけてます。

ところが世の中そんなにうまくいかないものです。Core i7、4コア+ハイパースレッディングに6GBメモリを搭載しサクサク動くはずが、意外にもモッサリなFirefox。

怪奇!空きメモリ0の恐怖!

メモリ6GBですよ、今まで1GBとか2GBとか使っていたのに比べて3倍。絶対にメモリが足りなくなることはないと思いきや。ふと気付くと空きメモリがほぼ0になっているんです。

resourcemonitor1

空きメモリが潤沢。しかし使っているうちに・・・

resourcemonitor2

空きメモリがたったの33MBに。え、どういうこと?

ええ、確かに「スタンバイ」というキャッシュに使われているようなのですが、このスタンバイが曲者。Firefoxのタブをがしがし開いているときに空きメモリ0だととたんにFirefoxが非常に重くなり、最悪応答なしになるんですね。

Core i7の威力も6GMメモリの効果もなく、従来のWindows XP+Pentium 4、2GBメモリと変わりません。

これはどうも Windows Vistaから導入されたスーパーフェッチのしわざ。そもそもスーパーフェッチとは?

Windows の管理: Windows Vista カーネルの内部 : 第 2 部

SuperFetch

メモリ マネージャで大きく変更されたのは、物理メモリの管理方法です。Windows の前のバージョンで採用されていたスタンバイ リスト管理には、2 つの制限があります。まず、ページの優先順位付けは、プロセスの最近の動作だけに依存し、プロセスの今後のメモリ要求を予測しません。2 つ目に、優先順位付けに使用されるデータは、任意の時点でプロセスが所有するページのリストに限られます。こうした欠点のせいで、"アフター ランチ症候群"、つまり、しばらくの間コンピュータから離れると、メモリを大量に使用するシステム アプリケーション (ウイルス対策スキャンやディスクの最適化など) が実行されている、ということになる場合があります。このようなアプリケーションは、ユーザーが使用していたアプリケーションでメモリにキャッシュしたコードやデータを、メモリを大量に使用する動作で強制的に上書きしてしまいます。ユーザーが戻ると、元のアプリケーションのデータやコードをディスクから呼び出す必要があるので、動作が遅くなっていることがわかります。

「アフターランチ症候群」対策として導入されたキャッシュ機構です。

第5回 パソコンの処理速度高める「見えざる新技術」・ユーザー行動学習もPC&デジタルカメラ-ビジネスユーザーのためのVista講座:IT-PLUS

これらの多くはユーザーが離席した際などのパソコン未使用時に実行するため、本来メモリー上にあった起動中のソフトをハードディスク上の一時メモリー(スワップファイル)に待避させ、バックグラウンドで動作するサービスがメモリー領域を占拠してしまう。そのため、席に戻って「Word」などのソフトを再度使おうとすると、メモリー使用パターンに起因するトラブルにより、離席前より処理が遅くなる場合がある。

そしてその効果のほどは・・・

第5回 パソコンの処理速度高める「見えざる新技術」・ユーザー行動学習も PC&デジタルカメラ-ビジネスユーザーのためのVista講座:IT-PLUS

ただし、Vistaの企業向け販売が始まってから2カ月程度しか経っていないため、実際の効果は未知数であるというのが正直な感想だ。例えば私の場合はウェブブラウザーとして「Firefox」を用いている。同ソフトは比較的起動が重いと言われているが、それほど起動スピードが向上したとは感じない。SuperFetchの効果を計るには、数カ月の猶予が必要だろう。

実はアプリケーションの起動スピードはさほど問題ではありません。というのも、クラウドコンピューティング全盛のこの時代、ブラウザは一度起動したら終了することはないからです。

スーパーフェッチは絶対に切れ!という格言

【失敗機能】 VistaのSuperFetchは絶対に切れ!

常にHDDがカリカリ言うVISTA。
とにかく一回切ってみろ、XP並みに軽くなるぞ。

【SuperFetch無効方法】

「コントロールパネル」→「システムとメンテナンス」→「管理ツール」
→「サービス」の項目にある[SuperFetch]をダブルクリック
[全般] タブで、[スタートアップの種類] の一覧の中から
[自動]、[手動]、[無効]、 [自動(遅延開始)] から無効を選択

Firefoxが絶不調

実はスーパーフェッチのメモリの問題以外に、Firefox自体がどうも不調です。

FirefoxがHDDにアクセスして頻繁に「応答なし」になる現象

具体的に言うと、Firefox起動時やブラウジング中にHDDにアクセスしまくって「応答なし」の状態になってしまう。20秒程度で解消するんだけど、非常にイライラ。

Googleで調べてみると、places.sqliteというデータベースファイルが悪さをしているかもしれない、ということが判明。

データベースファイルの再生成方法はこちら。

places.sqlite の再作成 Firefox Hacks 翻訳日記/ウェブリブログ

3. 再作成した方が良い場合

・places.sqlite が 2~3M 以上に肥大化している。
・できるだけファイルサイズを小さくしたい。
・新しいソフトや拡張機能を入れたくない。
・履歴が消失してもしばらくの間なら我慢できる。

これらの条件に該当する人は、試してみて損はないだろう。
どれくらいファイルサイズが小さくなるかと言えば、30M → 580K、4.1M → 560K だった。

さらに肥大化を抑制するための設定変更。

places.sqliteの肥大化を抑制してFirefoxのパフォーマンス低下を防ぐ!

browser.history_expire_days (browser.history_expire_days.mirror)・・・履歴の最長保持日数。デフォルトは180。
browser.history_expire_days_min・・・履歴の最短保持日数。デフォルトは90。
browser.history_expire_sites・・・履歴の保存数上限。デフォルトは40000。

places.sqliteの肥大化を抑えたいなら、履歴の最長保持日数・最短保持日数ともにデフォルトより小さな値にしましょう。私は最短7日、最長14日にしています。

browser.history_expire_sitesについては、「1日に見るサイト数 × 履歴の最長保持日数」を目安に設定すると良いとのこと。私は4200にしてます。

ということでWindows7(64bit)+Firefox3.6にしてもあまり快適にならないどころか、以前にもましてリソースモニターとにらめっこ、Firefoxのパラメータをチューニングし、空きメモリ領域を気にする毎日。結局 Chromeを使い始めるという始末で、しかも Firefox-addonが完全にリプレイスできてないので平行して使うという変則的な方法になってしまいました。

拷問! 熱地獄

さらに問題なのはパームレスト。使うとすぐにアッチッチーです。赤外線温度計を使い計測したところ40度オーバー。低温やけどになる温度に達していました。

CIMG5350

そこでDIY、冷凍餃子を包んでいた保温パックを切り出して2枚重ねて貼り付けるというもの。見た目は悪いですが、効果は抜群。ほんわかあったかいくらいで低温やけどは防げています。

ところがその分本体内に熱がこもってしまっているのでしょう、裏面は非常に高温に。

アクセル全開!危険な動画エンコーディング

普段はまるで寝ているかのようなCore i7。ブラウザにエディタ、せいぜいyoutube動画程度ではまったくもって余裕のよっちゃん。Core i7の性能を発揮する作業はたったひとつ。DVDのエンコーディングだけです。

先日ゲットしたPTAライブツアーのDVDをエンコーディングしたところ、なんとマシンが突然シャットダウン。ブルースクリーンもでず、なんの前触れもなくバッツーーーーンと電源が落ちたんです。しかも3回、しかも違うエンコーディングソフトで。

最初はOSの問題かと思ってましたが、PCを触るとアッチッチーです。起動後HDD温度を計測するソフトで温度をみてみると65度。落ちた時はもっと高かったに違いありません。CPU温度自体は90度前後で安定していたのですが、HDD温度かその近くにあるGPUの方がやられてしまったようです。普段のHDD温度は50度前後でしたが、この夏の暑さも作用していると思います。

結局

欲張りすぎはいけないということです。

今回の問題は

・Windows7、しかも64bit版でこなれてないということ
・ノートPCにCore i7というハイパフォーマンスなCPUを使っていること

がそもそもの原因。

これが Core 2 Duoなど32bitであればハードウェアの安定性もOSの安定性もあったように思います。しかもバッテリーは9セルなのに 3時間ほどしかもたず。なかなかにして不遇です。

安くて速い!と飛びついたのですが、何事もほどほどが肝心ですね。

【Amazon】

DELL Inspiron 1545 ベーシックパッケージ(クール・ブラック)
B003Q54D54

これぐらいが良かったかも。

【他の参考記事】

メモリ管理と重要なメモリ測定値について理解する

使用率にこだわる必要はありません。6 GB の物理 RAM を搭載しているコンピューターで 64 ビット版の Windows 7 を実行していて、定期的に達している最大値がメモリ使用量の 85% である場合、RAM には 900 MB の空きがあり、十分なヘッドルームがあるので問題ありません。

900MBあれば十分ですけど、33MBはどうでしょうかね・・・

ハード フォールトとページング ファイル サイズ - cagylogic

タスクマネージャのリソース モニタを見てみると、ディスクが回りっぱなし。メモリのハード フォールトの欄もグラフが振りきっている。なんで?このパソコンはメモリ4Gも積んでるんだよ。

リソース モニタを使うと、現在ディスクにアクセスしているプロセスがわかるんだけど、おかしなプロセスはいない模様。

想像するに、ページング ファイルがフラグメンテーションを起こしているんじゃなかろうかと。

マイコンピュータから右クリックで、システムのプロパティ、パフォーマンスの設定ボタンを押して、パフォーマンス オプションを見ると、仮想メモリが3.5Gになっている。

変更ボタンを押して、ページング ファイルなし を選択。

再起動。

おぉ、すんばらしく快適。

こちらトライしています。特に不具合は起きていません。