Як збільшити дисковий кеш Windows 7


18

У Windows 7 (64 біт) я читаю 9000 файлів середнього розміру. Загалом даних понад 200 Мб. Використовуючи Java (JDK 1.6.21), я повторюю файли. Перші 1400 або близько того йдуть на повній швидкості, але потім швидкість падає до 4 мс на файл. Виявляється, основна вартість понесена просто відкриттям файлів.

Я відкриваю файли за допомогою new FileInputStream(і, звичайно, закриваю їх вчасно, щоб уникнути витоків файлів). Після деяких розслідувань я бачу, що кеш-пам'ять диска Windows використовує лише 100 Мбайт оперативної пам'яті, хоча у мене є 8 ГБ. Я намагався збільшити розмір кешу за допомогою інструмента CacheSet , але будь-які надані нами значення вважаються поза діапазоном .

Я також спробував увімкнути LargeSystemCacheключ реєстру, але (після перезавантаження) CacheSetінструмент все ще вказує, що я використовую кеш-пам'ять 100 Мб (і не збільшується під час пробного запуску). Хтось має пропозиції "заохотити" Windows 7 кешувати мої 9000 файлів?


3
Звідки ви отримали інформацію про те, що лише 100 Мб використовується для кеш-диска? З того, що мені відомо, Windows використовує за замовчуванням всю вільну пам'ять для кешування дисків. Значення лише 100 МБ мені здається мінімальним.
Роберт

1
Частиною проблеми може бути Java, і це JVM. Існує безліч варіантів налаштування JVM - publib.boulder.ibm.com/infocenter/javasdk/v6r0/… . Я вважаю, що найкраще зробити це просто написати це на C ++ або FreeBASIC (обидва, які компілюються у вихідний код і обмежені лише тим, що дозволяє ОС).
Наталі Адамс

Відповіді:


4

Superfetch не кешує весь великий файл, лише ті частини, до яких можна отримати доступ. Отже, доступ до цього файлу вимагає читання диска. Дисковий кеш на 210 Мб, як мій, може кешувати все з усіх цих невеликих файлів у Windows. І продуктивність помітна. Але я сумніваюся, що це вплине на швидші системи.


2
Що таке суперфетч і як це стосується цього питання?
jpaugh

4

Я намагався збільшити розмір кешу за допомогою інструмента CacheSet, але будь-які надані нами значення вважаються поза діапазоном.

  1. Переконайтеся, що ви явно запустили CacheSet "Як адміністратор". CacheSet скаже, що значення знаходяться поза діапазоном, коли щось піде не так.
  2. Переконайтеся, що розмір кешу розділений на 4 Кб

Також я помітив, що CacheSet має певні проблеми з великими значеннями, можливо, це 32-розрядна програма з 2006 року. Я пішов і написав 64-бітну програму навколо того ж API, що дозволяє встановлювати розміри кешу понад 4 Гб: http: / /blog.thecybershadow.net/2012/12/14/64-bit-cacheset/

Примітка. У статті CacheSet згадується CacheMan, однак, як видається, в останній версії використовується той же API, що і CacheSet - він просто упакований в інтерфейс з купою пресетів та інших функціональних можливостей.


0

Я знаю, що це давно , але для інших, хто стикається з цією проблемою: Вам потрібно запустити CacheSet з адміністративними привілеями вручну. Якщо цього не зробити, ви отримаєте помилку OutOfRange; він НЕ автоматично просить пільги.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.