Como aumentar o cache de disco do Windows 7

18

No Windows 7 (64 bits), estou lendo 9000 arquivos de tamanho moderado. No total, existem mais de 200 MB de dados. Usando Java (JDK 1.6.21) Estou interagindo com os arquivos. Os primeiros 1400, aproximadamente, atingem a velocidade máxima, mas a velocidade cai para 4 ms por arquivo. Acontece que o custo principal é incorrido simplesmente abrindo os arquivos.

Estou abrindo os arquivos usando new FileInputStream (e, é claro, fechando-os a tempo de evitar vazamentos de arquivos). Depois de algumas investigações, vejo que o cache de disco do Windows está usando apenas 100 MB ou mais de RAM, embora eu tenha 8 GiB disponíveis. Eu tentei aumentar o tamanho do cache usando a ferramenta CacheSet , mas quaisquer valores que eu forneço são considerados < em> fora do intervalo .

Eu também tentei ativar a chave de registro LargeSystemCache , mas (após a reinicialização) a ferramenta CacheSet ainda indica que estou usando 100 MB de cache (e não aumenta durante a execução do teste). Alguém tem alguma sugestão para "encorajar" o Windows 7 a armazenar em cache meus arquivos 9000?

    
por Sathya 24.08.2010 / 15:00

3 respostas

4

O superfetch não armazena em cache todo um arquivo grande, apenas as partes acessadas. Portanto, acessar esse arquivo requer leitura de disco ainda. Um cache de disco de 210MB como o meu pode armazenar tudo em cache, desde todos esses pequenos arquivos no Windows. E o desempenho é perceptível. Eu duvido, porém, que isso teria impacto em sistemas mais rápidos.

    
por 02.12.2012 / 14:16
4

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

  1. Certifique-se de executar explicitamente o CacheSet "como administrador". CacheSet dirá que os valores estão fora do intervalo quando qualquer coisa der errado.
  2. Verifique se o tamanho do cache é divisível por 4 KB

Além disso, notei que CacheSet tem alguns problemas com grandes valores, possivelmente porque é um aplicativo de 32 bits de 2006. Eu fui e escrevi um programa de 64 bits em torno da mesma API, que permite configurar tamanhos de cache acima de 4GB: link

Nota: O artigo CacheSet menciona o CacheMan, no entanto, a versão mais recente parece usar a mesma API do CacheSet - ele é empacotado em uma interface do usuário com várias predefinições e outras funcionalidades.

    
por 14.12.2012 / 07:25
0

Eu sei que isto é antigo, mas para outros que se deparam com este problema: Você precisa executar o CacheSet manualmente com privilégios administrativos. Se você não fizer isso, receberá o erro OutOfRange; NÃO pedirá automaticamente privilégios.

    
por 24.01.2013 / 21:52