Desativar o cache de disco no Windows XP usando a linha de comando?

1

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 advertências para 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 aplicará o último punhado de ajustes que não posso fazer com o nLite, mas ainda gostaria de automatizar .

Um desses ajustes é desativar o cache de disco, já que já está sendo feito o cache no meu sistema operacional host, então prefiro que o Windows não use nenhuma de suas preciosas (e escassas) memórias no cache de disco.

É fácil fazer o uso da GUI quando tudo está 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?

Agradecemos antecipadamente por qualquer ideia:)

Daniel

EDIT: Apenas para evitar o debate "desativando o cache de gravação é ruim" (eu realmente gostaria apenas de respostas à minha pergunta :) Obrigado).

benchmarks ATTO para não gravar em cache (à esquerda) e gravar em cache (à direita):

EDIT2:Comoinspiraçãopor@techie007,eutenteideterminarosbenefíciosdememóriadedesligarocacheemprimeirolugar.Comovocêpodeverporessascapturasdetela,nadaérealmenteobtidodesativandoocache,pelomenosnoquedizrespeitoàmemória.Qualqueralteraçãoaquiseriainteiramentedentrodaincertezaestatística.

Paraoregistro,eunãosabiaexatamenteamelhormaneiradefazerisso,então,paraambasasexecuções,reinicieiamáquina,deixei-adescansarumpouco,depoisexecuteioATTOemonitoreiousodamemduranteeapósumaexecução./p>

Osdoisprimeirosestãocomocachedegravaçãoativado(duranteoATTOedepois):

Ospróximosdoissãoomesmocenário,mascomocachedegravaçãodesativado:

    
por DanielSmedegaardBuus 03.11.2013 / 17:58

3 respostas

1

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 de 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 cutucarem para mim;)

    
por 03.11.2013 / 20:40
1

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.

    
por 03.11.2013 / 18:23
0

Bem, fazer esse benchmarking acabou se revelando uma experiência de ducking de borracha:)

Esta não é uma resposta muito 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:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\IDE\DiskVMware_Virtual_IDE_Hard_Drive___________0000000130303030303030303030303030303030303130\Device Parameters\Disk" /v UserWriteCacheSetting /t REG_DWORD /d 00000000 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\IDE\DiskVMware_Virtual_IDE_Hard_Drive___________0000000130303030303030303030303030303030303130\Device Parameters\Disk" /v UserWriteCacheSetting /t REG_DWORD /d 00000000 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE\DiskVMware_Virtual_IDE_Hard_Drive___________0000000130303030303030303030303030303030303130\Device Parameters\Disk" /v UserWriteCacheSetting /t REG_DWORD /d 00000000 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE\DiskVMware_Virtual_IDE_Hard_Drive___________0000000130303030303030303030303030303030303130\Device Parameters\Disk" /v UserWriteCacheSetting /t REG_DWORD /d 00000000 /f

Isso é para as duas unidades no adaptador virtual ide0 - o primário e o escravo. Pelo menos no Fusion 6.

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:)

    
por 03.11.2013 / 20:03