Как увеличить кеш диска Windows 7

60868
Sathya

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

Я открываю файлы с помощью new FileInputStream(и, конечно, закрываю их вовремя, чтобы избежать утечек файлов). После некоторых исследований я вижу, что дисковый кэш Windows использует только около 100 МБ ОЗУ, хотя у меня доступно 8 ГБ. Я попытался увеличить размер кэша с помощью инструмента CacheSet, но любые значения, которые я предоставляю, считаются вне диапазона .

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

18
Откуда у вас информация о том, что для кэширования диска используются только 100 МБ? Из того, что я знаю, Windows по умолчанию использует всю свободную память для кэширования диска. Значение только 100 МБ кажется мне минимальным значением. Robert 12 лет назад 3
Частично проблема может быть в Java и JVM. Существует множество вариантов настройки JVM - http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.java.doc.user.aix64.60%2Fdiag. % 2Fappendixes% 2Fcmdline% 2Fcommands_jvm.html. Я думаю, что вам лучше всего написать его на C ++ или FreeBASIC (оба компилируются в нативный код и ограничиваются только тем, что позволяет ОС). Nathan Adams 11 лет назад 1

3 ответа на вопрос

4
Soren

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

Что такое superfetch и как это связано с этим вопросом? jpaugh 7 лет назад 2
4
Vladimir Panteleev

I've tried increasing the cache size using the CacheSet tool but any values I provide are considered out of range.

  1. Make sure that you explicitly run CacheSet "As Administrator". CacheSet will say that the values are out of range when anything goes wrong.
  2. Make sure that the cache size is divisible by 4 KB

Also, I noticed that CacheSet has some trouble with large values, possibly because it is a 32-bit application from 2006. I went and wrote a 64-bit program around the same API, which allows setting cache sizes over 4GB: http://blog.thecybershadow.net/2012/12/14/64-bit-cacheset/

Note: The CacheSet article mentions CacheMan, however the latest version seems to use the same API as CacheSet - it's just packaged into an UI with a bunch of presets and other functionality.

0
Jan Schejbal

Я знаю, что это старый, но для тех, кто сталкивается с этой проблемой: вам нужно запустить CacheSet с правами администратора вручную. Если вы этого не сделаете, вы получите ошибку OutOfRange; он НЕ будет автоматически запрашивать привилегии.

Похожие вопросы