2011年5月28日土曜日

Windows7 CHKDSK メモリ不足で停止。仮想メモリのページングファイルを使う設定に改めて回避できた。

こんなかんじのメモリ不足

 4GB のメモリを積んだパソコンに Windows7(64bit) Professional SP1 を導入。4GB メモリがあるのだから(俺の使い方なら)仮想メモリのページングファイルは不要だろうと考えた。

 このパソコンに仕事でよく使う資料を移すことにした。バックアップしたファイルを保持している外付けディスクを接続し、「コピー前だし念のためと CHKDSK でエラーチェックしてみっか…」と軽い気持ちで始めた。動き始めたあと放置しCHKDSKの完了を待ったのだが、メモリ不足のメッセージが出て完了せぬまま処理が終了していた。

 常駐モノを色々と終了させて再度試みたが、同じ結果であった。antivirus が悪さしているのかと勘ぐり、常駐のシールドを一旦切ってみたのだが、効果はなく、同じ結果となった。

メモリ不足を調べる

 処理開始直後にもダメだったというメッセージを見た時点でも、空きメモリは充分にある。何がどうなっているやらわからない。仮想メモリのページングファイルは使う設定に改め、Windows のリソースモニターを立ち上げてメモリの利用状況を把握できるようにしたうえで、CHKDSKを行った。

 CHKDSKの開始後、「○○個のインデックスエントリが処理されました。」と表示される。その処理数がが増えるほどに、つまり処理が進むにつれ、一定の割合でメモリを食っていく。時間の経過に対してほぼ線形な感じ。CHKDSKの処理開始直前には 1226MB (31%) だったのが、87万件を処理する頃には 3700MBを超えていた。詳細を見れば、explorer の利用するメモリのうち、そのプライベート域が激増していた。

 処理件数が88万件となったあたりで、パソコンに搭載されていた物理メモリの容量を食い切った感じであった。物理メモリ要求は 3731MB (93%) あたりで飽和していた。以降はページングファイルを使いながら追加の領域を確保しつつ処理を続行しているのか、処理が遅く、つまり、処理インデックス数の経過時間あたりの増分が格段に小さく、なった。そして、ページングファイルを使う設定に改めたことが効いたか処理は正常に終了した。終了後にexplorer が掴んでいたメモリが解放されたのだが、物理メモリの使用量が 911MB となって、開始前より300MBほど減っていた。その理由はよく判らないまま。

XP(32bit) では

 同じことが Windows7(32bit)でも起きるのかは未確認。そして確認する予定もない。しかし、これまで使ってきた Windows XP SP3 32bit版ではCHKDSKでメモリ不足となった経験はない。今回あらためて確認してみたが、CHKDSKの処理が進むに連れてメモリ使用量が増えることはなかった。

雑感

 「自分の使い方なら4GBも実メモリ積んでりゃページングは要らんでしょ!」と思っていたのだが、普通にやる作業で足りない状況に直面するとは思わなんだ。