Eu sempre quis criar uma instalação realmente enxuta e otimizada do Windows XP para usar com o VMware, desabilitando tudo o que é inútil para o caso de uso.
Eu usei alguns dias com o nLite e tenho uma instalação realmente enxuta - não muito agressiva (cara, há algumas ressalvas em ajustes e remoção de coisas com o nLite!). O ISO é realmente incrível.
Agora, no espírito do momento, estou tentando montar um script em lote pós-instalação que irá aplicar o último punhado de ajustes que eu não posso fazer com o nLite, mas eu ainda gostaria de automatizar.
Um desses ajustes é desabilitar o cache de disco, já que já está ocorrendo o armazenamento em cache no meu SO host, então prefiro que o Windows não use nada de sua preciosa (e escassa) memória no cache de disco.
É fácil fazer o uso da GUI assim que tudo estiver configurado, mas seria muito legal se eu pudesse fazer isso no meu script em lote. Especificamente para desativar o cache de disco em cada unidade (tenho duas unidades na minha configuração, uma delas é persistente para arquivos temporários e de permuta, para que eles não percam espaço em snapshots) ou talvez haja um serviço do sistema ou semelhante que possa ser desativado, desativando o cache em todo o sistema de uma só vez?
Agradeço antecipadamente quaisquer ideias :)
Daniel
EDIT: Apenas para evitar o debate "desativando gravação em cache é ruim" (eu realmente só gostaria respostas para minha pergunta :) Obrigado).
Benchmarks ATTO para nenhum cache de gravação (à esquerda) e cache de gravação (à direita):
EDIT 2: Como por inspiração por @ techie007, eu tentei determinar os benefícios de memória de desligar o cache em primeiro lugar. Como você pode ver por essas capturas de tela, nada é realmente obtido desativando o cache, pelo menos no que diz respeito à memória. Qualquer alteração aqui seria inteiramente dentro da incerteza estatística.
Para o registro, eu não sabia exatamente a melhor maneira de fazer isso, então, para ambas as execuções, reiniciei a máquina, deixei-a descansar um pouco, depois executei o ATTO e monitorei o uso da mem durante e após uma corrida.
Os dois primeiros estão com o cache de gravação ativado (durante o ATTO, depois depois):
Os próximos dois são o mesmo cenário, mas com o cache de gravação desativado:
fonte
Respostas:
Não é possível. O Windows realmente não tem um cache de disco, ele tem um cache de páginas e todo o subsistema de gerenciamento de memória é construído em torno dele. Até mesmo coisas como rastrear qual memória está ativa e qual memória está inativa são gerenciadas através da proteção de página no cache de páginas.
Se o convidado não controlar o armazenamento em cache, isso significa que o convidado terá que passar todos os acessos ao disco para o host, para que ele saiba o que manter na memória. Os programas rodariam a uma velocidade microscópica, uma vez que uma falha suave até o host seria causada por cada código de tempo percorrido um limite de página. Esse é apenas o problema mais óbvio, há muito mais que seria horrível.
Seria como construir um carro todos os dias para ir ao trabalho.
fonte
E a resposta final será que sim, você pode fazer da maneira (feia) que eu descrevi antes, mas não há nenhum benefício em fazê-lo (pelo menos com o XP).
O uso da memória é praticamente o mesmo, assim como o desempenho.
Então, no geral, isso é uma boa notícia, já que implementá-lo no meu script estava sendo muito difícil!
Obrigado a todos por cutucando para mim;)
fonte
Bem, fazer esse benchmarking na verdade acabou sendo uma experiência de ducking de borracha :)
Esta não é uma resposta realmente boa, a menos que você saiba que está em um caso de uso realmente específico, como o meu com o VMware. Porque você pode fazer isso através de chaves de registro, mas somente se você souber o caminho para as chaves.
Aqui estão os comandos no meu caso:
Isso é para as duas unidades no adaptador virtual ide0 - o primário e o escravo. Pelo menos no Fusion 6.
Eu preferiria muito mais fazer uma pesquisa por UserWriteCacheSetting e depois desabilitar cada um deles, mas não sei como faria isso na linha de comando. Se eu descobrir, atualizarei :)
fonte