Ramdisk vs Cache IO embutido no Windows

1

Estou tentando entender o cache de E / S interno no Windows. Se um aplicativo grava em um arquivo e o lê / grava várias vezes subseqüentes, parece que o cache de E / S deve permitir que isso aconteça tão rápido quanto a memória do sistema permitirá? Então o Windows grava gradualmente as alterações de volta ao disco físico de maneira não bloqueante?

No entanto, tenho visto outras questões relacionadas a ramdisk neste site, onde os usuários vêem ganhos significativos montando uma parte da memória do sistema como uma unidade de disco. Se o cache de E / S funciona como descrito acima, por que isso é necessário? O Windows tem configurações para ajustar isso?

Isso leva à minha pergunta real: é necessário usar um ramdisk e sincronizar manualmente as alterações de volta para um disco físico, mesmo minutos ou horas depois?

Editar: Corrigido equívoco de DMA vs IO Cache corrigido na resposta de Evan Anderson.

    
por Dwayne 14.04.2011 / 01:09

2 respostas

4

Acho que você está confundindo a funcionalidade do acesso direto à memória (DMA, um recurso de hardware) com os recursos fornecidos pelo Gerenciador de cache no Windows.

O DMA é um método para permitir que dispositivos IO acessem diretamente a memória do sistema sem intervenção da CPU. Aplicativos não usam DMA - drivers de dispositivos fazem. Os aplicativos estão muito distantes do processo de DMA.

As solicitações de leitura / gravação de aplicativos passam por várias camadas no caminho para o dispositivo IO. O Gerenciador de Cache vai lidar com a maior parte do armazenamento em cache de pedidos via memória do sistema. Os drivers de dispositivo dos próprios dispositivos de E / S também podem implementar o armazenamento em cache.

Se o seu aplicativo não interagir bem com o Gerenciador de Cache, mas com um disco RAM (que você determinaria por benchmarking), use um disco RAM. Para mim, não faz sentido academicamente dançar em torno do "bem" subjetivo de várias tecnologias. Em termos de implantação de produção, a chave para saber se há um "ponto" para usar uma determinada tecnologia deve ser baseada em benchmark com condições mais próximas do mundo real que você possa simular. Quando você faz alterações no SO, na pilha do driver, no código do aplicativo, etc., você deve refazer seus benchmarks, uma vez que suas suposições antigas podem não ser mais verdadeiras.

    
por 14.04.2011 / 01:18
-2

Muitas vezes eu vi muitos problemas com o cache do Windows, como não salvar alguns dados recentes para o cache. Eu vi estranhos vários dias de idade 100s-MB arquivos de vídeo no cache no RamMap Sysinternals no meu notebook. Mesmo durante períodos consideráveis de falta de memória ...

Portanto, verifique se seus dados estão no cache. Quanta memória cache você tem e que tamanho de arquivos você está experimentando?

    
por 19.04.2017 / 05:34