2012-06-03

Windows 8を直す方法

A1E1: My Fix for Windows 8 Freezes and General Weirdness

にもかかわらず、HDDがたまに、一分間ほど100%ビジーな状態だが、読み書きが0%ってことがあった。

[中略]

まあともかく、内蔵HDDを取り替えようと外部HDDを用意してたんだが、多数のファイルがあるディレクトリを外部HDDにコピーしようとしたとき、実際の書き込みが遅れるという、おなじ挙動をした。つまり、Windowsが実際の書き込みの前に、何かしていて、それがディスクを回転させているわけだが、実際には何もしてないわけだ。不思議に思い、この問題を再現しようと、色々な実験をしてみたところ、でかいコピーとかダウンロードとかをしてると、再現できることがわかった。ダウンロード先が別のドライブだとしても、やはり再現できる。

そこで俺は、一見めちゃくちゃな行動を起こすことにした。詳細なシステムプロパティから、ページファイルを無効化したのだ。リブートしてみたところ、今までの問題が一切解決した。Windows 8のフリーズに関するフォーラムとかを眺めてみると、どうも、フリーズする状況は、ブラウザのキャッシュを参照しているとか、でかいダウンロード中だとか、ファイルコピーだとかのようだ。

つまりこういうことだ。今のシステムはメモリが大量にあるため(俺のマシンの場合、6GB)、ページファイルなんて必要ないのだ。数日ほどマシンの状態を観察してみても、俺の環境では、1.5GBぐらいしか消費しない。6GB使いきるなんてありえない。これを考えてみると、もはや4GB以上のメモリを持つ環境では、ページファイルの存在は、システムの動作を遅らせるだけではないか。なぜならば、メモリはどのHDDよりも早いからだ(ある種の特殊なSSDはともかくとして)。

つまり、こういうことだろう。Windowsでは普通にメモリを確保すると、メモリのためにディスク上のページファイルの領域が割り当てられる。この処理には、ページファイルにアクセスしなければならない。つまり、メモリの確保にはディスクアクセスが必要になる。しかし、メモリページファイルがあるディスクへのアクセスが集中すると、メモリ領域の確保や解放処理などのためのディスクアクセスも、当然影響を受ける。他のディスクへの読み書きには、メモリを必要とするが、そのメモリの確保に戸惑うため、実際の処理が進まない。

もし、この予想の通りだとしたら、なんだか非常に馬鹿げた実装だ。

No comments: