ファイルキャッシュのサイズ
Windowsをチューニングしようと言うフリーソフトは色々ありますが、有名なもののなかに「窓の手」というのがあります。このソフトを使ってパフォーマンス調整をできる項目の中に「ファイルキャッシュサイズ」というのがあります。これはレジストリの中のIoPageLockLimitという項目を変更するらしいのですが、そうするとハードディスク等の周辺ブロックとメモリーとの間のデータのやりとりを滞りなく行なうための緩衝用メモリーを大きくできたり小さくしたりできるのです。いまいちよくわからない機能かも知れません。
私は昔、NECのPC98を使っていた頃にこのキャッシュというものの威力を思い知りました。386DX-20MHzというCPUをオーバードライブカードを使ってCyricの486DX-80MHzにパワーアップした時のことです。最初に起動したときは全然スピードが変わりませんでした。ところがCPU用デバイスドライバを組み込んだらCPUキャッシュが使えるようになり、途端に画面が目にも止まらぬ速さでスクロールするようになったのです。CPUクロックを上げるだけではなく、キャッシュメモリーでそのスピードを活かしてやらないと、何もならないんだなと知りました。
これはCPUキャッシュの話ですが、上記のファイルキャッシュも要するにキャッシュです。これを最適化することでスピードアップ出来るんじゃないかという話は結構あちこちに出ています。
通常この値を0にしておくと、Windowsはファイルキャッシュを512kBにしているそうです。ところが実際には数MBにした方が効率が上がるというのです。そこで試してみました。
HDBenchというソフトを使って、このキャッシュサイズを少しずつ変えながら結果を並べたのが以下の表です。キャッシュサイズはMBで書いてありますが、レジストリには正しくバイト単位で記入されます。
ファイルキャッシュ |
トータル |
ハードディスク |
||
読み込み |
書き込み |
コピー |
||
規定値 |
12559 |
17718 |
16595 |
1455 |
1MB |
12805 |
18757 |
17125 |
1445 |
2MB |
12477 |
17444 |
16436 |
1422 |
4MB |
12870 |
19146 |
17094 |
1461 |
8MB |
12712 |
18965 |
16844 |
1439 |
16MB |
12565 |
18757 |
15752 |
1555 |
64MB |
12751 |
18486 |
16981 |
1507 |
176MB |
12835 |
18830 |
17152 |
1600 |
※本当は他にもCPU演算、メモリーアクセス、グラフィックスの評価をしてトータル成績が出てきます。ですが他の成績は殆どあまり変わらなかったのと、今回のファイルキャッシュはハードディスクアクセスにこそ効いてくるはずだということで、割愛しました。
これを見て4MBが適切かな?と思いました。トータルが高いというだけでなく、キャッシュが最も良く現れるハードディスク読み込み速さが最も高いからです。ちなみに176MBというのは滅茶苦茶ですが、総メモリー量の半分にしてみろというような記事を目にしましたのでやってみたまでです。LibrettoL5はメインメモリーから16MBのCPU用演算領域を消費しますので、そのあとの残り量の半分です。これは流石にファイルコピーで絶大な力を発揮していますが、サンプルファイルは100MBのものなので、当然それを一気にメモリーに読み込めるだけのファイルキャッシュを持っている方が速くなります。普通はそんなに大きなファイルは扱わないので、殆ど無意味と言えば言えます。
そんなわけでファイルキャッシュはLibrettL5の場合は4MBということにしました。でもこの設定をしないでWindowsの規定値で使っていても殆ど体感的に変わりはないように思います。
ところがそう決めて使い出してすぐ、Explorerが規定外のメモリーへアクセスしようとしたとかで落ちてしまいました。あれ〜?ファイルキャッシュサイズを変えたから?…ということで今は結局Windows規定値を使っています。体感的にそう変わらないからいいんじゃないかな…。
注)レジストリをいじるのは自己責任です。下手をするとWindowsが起動しなくなりますから注意してくださいね。(経験者は語る…(ToT)…)