Como aumentar o cache do disco do Windows 7


18

No Windows 7 (64 bits), estou lendo 9000 arquivos de tamanho médio. No total, existem mais de 200 MB de dados. Usando Java (JDK 1.6.21), eu estou repetindo os arquivos. Os primeiros 1400, aproximadamente, vão a toda velocidade, mas a velocidade cai para 4ms por arquivo. Acontece que o custo principal é incorrido simplesmente abrindo os arquivos.

Estou abrindo os arquivos usando new FileInputStream(e, claro, fechá-los a tempo de evitar vazamentos). Após algumas investigações, vejo que o cache do disco do Windows está usando apenas 100 MB ou mais de RAM, embora eu tenha 8 GiB disponíveis. Tentei aumentar o tamanho do cache usando a ferramenta CacheSet , mas todos os valores que forneço são considerados fora do intervalo .

Também tentei ativar a LargeSystemCachechave do Registro, mas (após a reinicialização) a CacheSetferramenta 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 "incentivar" o Windows 7 a armazenar em cache meus arquivos 9000?


3
De onde você tirou as informações, apenas 100 MB são usados ​​no cache do disco? Pelo que sei, o Windows usa por padrão toda a memória livre para o cache do disco. Um valor de apenas 100 MB me parece um valor mínimo.
Robert

11
Parte do problema pode ser Java e é JVM. Existem inúmeras opções para ajustar a JVM - publib.boulder.ibm.com/infocenter/javasdk/v6r0/… . Eu acho que sua melhor aposta é apenas escrevê-lo em C ++ ou FreeBASIC (ambos compilados em código nativo e limitados apenas pelo que o sistema operacional permite).
Natalie Adams

Respostas:


4

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


2
O que é superfetch e como isso se relaciona com esta pergunta?
jpaugh

4

Tentei aumentar o tamanho do cache usando a ferramenta CacheSet, mas todos os valores que forneço são considerados fora do intervalo.

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

Além disso, notei que o CacheSet tem alguns problemas com valores grandes, possivelmente por ser um aplicativo de 32 bits a partir de 2006. Escrevi um programa de 64 bits em torno da mesma API, que permite definir tamanhos de cache acima de 4 GB: http: / /blog.thecybershadow.net/2012/12/14/64-bit-cacheset/

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


0

Sei que isso é antigo, mas para outras pessoas que enfrentam esse problema: Você precisa executar o CacheSet manualmente com privilégios administrativos. Caso contrário, você receberá o erro OutOfRange; NÃO pedirá privilégios automaticamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.