Existe uma maneira de forçar o Windows a armazenar em cache um arquivo na RAM

6

Eu tenho um servidor de arquivos do Windows Server 2008 R2, que possui alguns arquivos grandes que, em raras ocasiões, é muito importante para ser copiado para outro sistema o mais rápido possível.

Existe uma maneira de forçar esses arquivos a sempre serem armazenados em cache na RAM?

    
por Josh 25.10.2010 / 19:00

5 respostas

7

Na maioria das vezes, o gargalo não é tanto obter o arquivo do disco para a RAM, mas sim da RAM para a rede. A menos que o sistema esteja muito atolado em atividade ou com pouca memória RAM, o Windows deve lidar com o armazenamento de arquivos de maneira razoavelmente inteligente.

Você pode querer fazer alguns testes e ver se há realmente um gargalo no sistema que pode melhorar bastante mantendo certos arquivos na memória versus trocados para o disco quando o Windows acha que deve ser salvo no disco. Estou apostando que você economizará muito pouco tempo, já que o gargalo provavelmente seria a rede e, quando o arquivo for enfileirado para ir à rede, a unidade já está preenchendo os buffers na memória, já que ele puxa o arquivo para fora da rede. dirigir.

Dito isso, a única maneira realmente confiável de ter arquivos de dados armazenados na memória que eu conheço é criar um disco RAM e copiar os arquivos, assumindo que eles são estáticos. Caso contrário, você tem uma queda de energia e eles se foram.

Caso contrário, você pode querer investir em muita memória RAM e em unidades de disco de alta velocidade. Talvez até mesmo uma configuração RAID espelhada, já que tem um alto desempenho de leitura (gravação lenta). Eu deixei o Windows e o gerenciador de memória fazerem isso e concentrei-me em minimizar o tempo de acesso com melhores subsistemas (disco rápido, RAID, muita memória, NIC de alta velocidade e alta qualidade) em vez de ajustá-lo ao ponto de depurar ou solucionar problemas poderia se tornar mais uma dor no caminho.

    
por 25.10.2010 / 19:08
1

Você pode experimentar o supercache ou outras soluções alternativas de cache, ou talvez queira considerar o uso de um SSD com acesso de leitura de alta velocidade - Isso saturará praticamente qualquer conexão de rede com facilidade.

A única outra opção que não corresponde às suas necessidades, mas mencionarei:

Se você ESCRITUAR o arquivo em seu aplicativo, tente criar com:

FILE_ATTRIBUTE_TEMPORARY e FILE_FLAG_DELETE_ON_CLOSE

Isto diz ao Windows para tentar manter os arquivos na RAM em vez de no disco - eu não acho que isso vai corresponder às suas necessidades, mas você pode ler mais em link

Steve Radich - link

    
por 19.11.2010 / 04:29
0

Não há uma maneira padrão de fazer isso. O Windows não possui esses ganchos. Se isso for realmente importante para você, você pode tentar reproduzir os algoritmos de armazenamento em cache de arquivos do Windows acessando com freqüência o arquivo da rede. Isso deve manter o arquivo em cache, mas não há garantias. IIRC, você não precisa ler o arquivo inteiro para obter o arquivo inteiro em cache, então ler um subconjunto do arquivo deve ser suficiente.

    
por 25.10.2010 / 19:17
0

Você pode pré-mapear arquivos usando arquivos mapeados na memória para acelerar as coisas link

    
por 08.08.2017 / 20:33
-1

Sim, existe uma maneira de enganar o gerenciador de memória do sistema operacional e carregar todo o arquivo / pasta no cache do sistema operacional. Dê uma olhada no post aqui: link

    
por 25.02.2013 / 19:37

Tags