Как увеличить кеш диска 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
Что такое SuperFetch, и как это связано с этим вопросом?
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.