Windows 7のディスクキャッシュを増やす方法


18

Windows 7(64ビット)では、9000の中程度のサイズのファイルを読んでいます。合計で、200 MBを超えるデータがあります。Java(JDK 1.6.21)を使用して、ファイルを繰り返し処理しています。最初の1400程度はフルスピードで動作しますが、ファイルごとに4ミリ秒まで速度が低下します。ファイルを開くだけで主なコストが発生することがわかりました。

を使用してファイルを開きますnew FileInputStream(もちろん、ファイルリークを防ぐために時間内に閉じます)。いくつかの調査を行った結果、8 GiBを使用できますが、Windowsのディスクキャッシュは100 MB程度のRAMしか使用していないことがわかりました。CacheSetツールを使用してキャッシュサイズを増やしてみましたが、指定した値は範囲外と見なされます

また、LargeSystemCacheレジストリキーを有効にしようとしましたが、(再起動後)CacheSetツールは100 MBのキャッシュを使用していることを示しています(テスト実行中に増加しません)。誰かが私の9000ファイルをキャッシュするようにWindows 7を「奨励する」ことを提案していますか?


3
ディスクキャッシュに100MBしか使用されていないので、どこから情報を取得しましたか?私が知っていることから、Windowsはデフォルトですべての空きメモリをディスクキャッシュに使用します。100MBの値は最小値のように思えます。
ロバート

1
問題の一部はJavaである可能性があり、それはJVMです。JVMを調整するための多数のオプションがあります-publib.boulder.ibm.com/infocenter/javasdk/v6r0/…。あなたの最善の策は、C ++またはFreeBASIC(どちらもネイティブコードにコンパイルされ、OSが許可するものによってのみ制限される)でそれを書くことだと思います。
ナタリーアダムス

回答:


4

Superfetchは、アクセスされる部分のみを含めて、大きなファイルのすべてをキャッシュしません。そのため、そのファイルにアクセスするには、ディスクの読み取りがまだ必要です。私のような210MBのディスクキャッシュは、Windowsの小さなファイルすべてからすべてをキャッシュできます。そして、パフォーマンスは顕著です。しかし、それがより高速なシステムに影響を与えるかどうかは疑問です。


2
スーパーフェッチとは何ですか?また、この質問とどのように関連していますか?
19:31にjpaugh

4

CacheSetツールを使用してキャッシュサイズを増やしてみましたが、指定した値は範囲外と見なされます。

  1. CacheSetを「管理者として」明示的に実行してください。CacheSetは、何か問題が発生した場合、値が範囲外であると言います。
  2. キャッシュサイズが4 KBで割り切れることを確認してください。

また、私はCacheSetが、それは私が行った2006年からの32ビットアプリケーションがある可能性があるため、大きな値を持ついくつかの問題を持っていることに気づいたと4ギガバイトの上にキャッシュサイズを設定することができ、同じAPI、周りの64ビットプログラムを書いた:のhttp:/ /blog.thecybershadow.net/2012/12/14/64-bit-cacheset/

注:CacheSetの記事にはCacheManが記載されていますが、最新バージョンではCacheSetと同じAPIを使用しているようです-多数のプリセットやその他の機能を備えたUIにパッケージ化されています。


0

私はこれが古いことを知っていますが、この問題に遭遇する他の人のために:管理者権限でCacheSetを手動で実行する必要があります。そうしないと、OutOfRangeエラーが発生します。自動的に特権を要求することはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.