2015年1月12日月曜日

USBメモリにReadyBoostを設定してキャッシュを逃がす

ReadyBoostは昔からあるが、Windoes7(64bit)にして物理メモリを4GB積んでいればお世話になることもないと思っていた。

ネットを見るぐらいの使い方しかしていないので十分なハズである。

(ReadyBoostの記載は下のほう。★までジャンプ)

症 状


最近はスリープから復帰後しばらくすると、ハードディスクへのアクセスが10分くらい延々と続き、ブラウザの表示もままならない。この間はひたすら待つしかない。

何が原因なのか分からないのでとりあえずリソースモニタで確認すると、system PID=4が書き込みをしていることまでは分かった。

何を書き込んでいるのか。


原因の推測

可能性として、
  • 仮想メモリのページングファイル
  • インデックス作成
  • プリフェッチ(次の動作を先読みしてキャッシュする)
あたりが怪しい。

仮想メモリはハードディスクに書き込まれる。

多くのメモリを消費すると仮想メモリが使われてディスクアクセスも多くなるはずである。


しかしネットを見るだけなのにそんなにメモリを消費するのだろうか?

タブブラウザで「後で見よう」とどんどん開いていくと知らぬ間に多くのメモリを使ってしまっているようだ。

メモリの使用量を見ると半分以上はIEだったりGoogleChromeだったりが消費している。

昔に比べてパソコンの性能やネットの速度を気にする必要がなくなり、ホームページのコンテンツが大きくなっているせいもあるかもしれない。


また最近は再起動をせずにスリープを繰り返している。
これもメモリへキャッシュされるのでディスクアクセスが増える一因になりそうだ。

インデックス作成はあまり関係ないのかもしれない。インデックスをどのタイミングで作成しているのか分からないので原因の候補とした。
(結果的に効果があったのか分からないので以降は触れてません)

対 策

ブラウザを小まめに閉じればよいではないか。
再起動を小まめに行えばよいではないか。
と言えばそれまでだが、便利に快適に使いたいので対策を考えることにした。

ざっと思いつくのは、
  • 仮想メモリの削除
  • メモリ増設
  • SSDの購入
  • ReadyBoost設定
あたりである。

ネットを見るだけなので出来るだけお金を使わずに対策をしたい。


仮想メモリの削除


まずは仮想メモリを削除してみた。

パフォーマンスの設定
 

仮想メモリのページングファイルを0MBに変更


いったん再起動。

結果の確認

普段どおりにブラウザを起動してネットをみてみた。
いくつかページを開いていくとやはり遅い。

メモリを食いつぶしてしまったようだ。

仮想メモリのそもそもの目的を考えれば当たり前の結果ではあるが、それでもブラウザがメモリを食いすぎなのではないかと言いたくなる。

なんでメモリが4GBもあるのにネットを見るだけで困るのだろう。

仮想メモリは0MBのままにして、物理メモリを増やすことを検討することにした。


物理メモリ(あるいはSSD)の増設の検討

DDR3で4GB(2GBx2)程度を増設しようと秋葉原を放浪。

DDR4がまだ普及していないのでDDR3は現役、値段もそれほど落ちていないようだ。中古も然り。

1GB:1,000円といった相場のようだが、円安の影響で少し高めに映る。

4GBで4,000円強。
暇つぶしにネットを見るだけと思うとなかなか買いづらい。

いっそのことSSDを入れてしまうことも検討。
これはネット以外でも恩恵を受けるし、また次にパソコンを作るときにもSSDはそのまま使えるハズである(メモリは型落ちして使えない可能性もある)。

しかしやはり2万円以上も出すのは本末転倒。
今回は見送ることにした。


やはりメモリを買うしかないか・・。
ここでReadyBoostを思い出す。

家に使っていない4GBのUSBメモリがあった。
しかも簡単に試せる。


ReadyBoostを試す★

ReadyBoostはUSBメモリを挿して、プロパティで「このデバイスを使用する」にチェックを入れるだけで設定が終わる。

(前述の仮想メモリは使わない設定のままにしている)

容量は推奨値とした。


リソースモニタを見ていると、物理メモリの使用量が60%から40%に突如下がった。
これは期待が持てそうだ。

右上のグラフのように効果が現れた。


結果の確認

快適。以前のように快適になったと言ったほうがよいかもしれない。

スリープから復帰してもハードディスクへのアクセスが発生しない。
やはり仮想メモリ設定が問題だったのだろうか。多くし過ぎていた可能性もある。


なぜWindowsは使い続けると遅くなるのだろう。


ReadyBoostは複数のUSBメモリに対しても設定できる(Windows7~)。
今回は4GBで試したが更にUSBメモリを挿していけば効果も上がるかもしれない。

USBメモリはDDR3メモリに比べて格安なので追加購入しても良いかもしれない。


Chromeでいくつまでタブを増やしていけるか念のため確認をすることにした。


新たなる問題

ハードディスクの仮想メモリを0MBにしたことで、今まで意識していなかったコミットチャージが100%になってしまう。


タブを20個くらい開いたところでChromeが落ちた。

物理メモリが100%に達する前にコミットチャージが100%に到達。
Chromeが強制終了されるという状況。

原因はやはりメモリ不足。
 
ReadyBoostはハードディスクの仮想メモリへのアクセスをキャッシュするような物のはず。キャッシュのキャッシュといった感じだろうか。
 
ハードディスクへの仮想メモリ設定をしなければキャッシュはRadyBoost設定されたUSBメモリに向けられるため、ハードディスクへのアクセス無しにキャッシュが利用可能だと思ったのだが。恐らくこれは間違っていない。
 
問題はRadyBoostは仮想メモリではないということだ。
つまりキャッシュとして使う空間は確保されたがこれはメモリの延長では無い。
 

再び対策

 
そんな訳で最終的には仮想メモリを再設定。


Dドライブにシステム管理サイズの仮想メモリを設定。

設定するとコミットチャージがガクッと軽減された。
 
 
 

再び結果の確認

Chromeでタブを40個くらい開いてみた。
 
物理メモリは100%に近づくが到達はしない。
 
一部メモリを開放して逃がしているような動きをしている。
 
コミットチャージも余裕はあることが分かった。
 
仮想メモリの容量は約4GB。
 
システム管理サイズという設定にしたが、物理メモリが100%に近づいても値は変わらなかった。
 

 
 

まとめ

現状のおさらい

Windows7(64bit)
物理メモリ:4GB
仮想メモリ:4GB(システム管理設定)
ReadyBoost:4GB

試してわかったこと

  • ReadyBoost設定をすると物理メモリの消費量が軽減される。
  • 仮想メモリ設定をするとコミットチャージの消費量が軽減される。
  • ReadyBoostは仮想メモリの代わりではなく単にキャッシュ先。
つまり物理メモリの不足を補うためには仮想メモリが必要で、仮想メモリのアクセス速度の改善にはReadyBoostが有効で、ReadyBoostは物理メモリを消費する一部の役割(何かわからない)を分担する。

今回試した順序ではこのような事が分かったが、順序を変えると違う結論になるかもしれない。

特に最後のわからない部分。

ReadyBoostの注意点

  • 既に性能が良い場合ReadyBoostは効果が得られない場合もある
  • 対応したUSBメモリを用意する必要がある(読み書きの速度)
  • USBメモリの容量が多ければ良いという訳でもない(物理の3倍を目安にする)
  • OSの起動/停止が若干遅くなる(スリープを多用する場合は気にならない)
  • USBメモリは抜けてもよい(いつ抜けてもシステムは気にしない)












0 件のコメント:

コメントを投稿