Como limpar o cache de leitura de disco do Windows?


13

Para teste de desempenho, preciso limpar o cache de leitura de disco do Windows. Tentei pesquisar no Google, mas não consegui encontrar nada além de reiniciar ou outras coisas manuais. Antes de desistir e fazer isso, gostaria de saber se alguém sabe como limpar o cache de leitura de disco do Windows. Estou testando no Windows 7, mas também estou interessado em soluções do Windows XP.

Respostas:


3

Como alternativa, preencha o cache com dados que você sabe que não serão usados ​​no teste e execute o teste.


1
Como alternativa, você pode levar toda a RAM disponível. O Windows liberará o cache do arquivo para usar essa RAM. Para detalhes, veja a resposta fornecida por Stephen Denne.
Ultralisk

Eu esperava algo menos 'solução alternativa', mas acho que sua sugestão é mais fácil de implementar em um script de teste automático na minha situação. Obrigado pela sugestão.
Sebastiaan M


3

Para uma visão muito melhor do cache do sistema de arquivos do Windows XP - tente o ATM de Tim Murgent - ele permite visualizar o tamanho do conjunto de trabalho e o tamanho da lista de espera do cache do sistema de arquivos em uma visualização mais detalhada e precisa. Para Windows XP - você precisa da versão antiga 1 do ATM, disponível para download aqui, pois as versões V2 e V3 requerem o Server 2003, Vista ou superior.

Você observará que, embora o Cacheset reduza o "Cache WS Min" - os dados reais ainda existem na forma de listas de espera, de onde podem ser usados ​​até que sejam substituídos por outra coisa. Para substituí-lo por outra coisa, use uma ferramenta como MemAlloc, flushmem de Chad Austin ou Consume.exe nas Ferramentas do Windows Server 2003 Resource Kit.


3

Eu usei o RAMMap . Tem possibilidade de liberar memória de alguns tipos de alocações.

O conteúdo do cache do arquivo pode ser observado na guia "Resumo do arquivo" e selecionar "Lista de espera vazia" no menu "Vazio" deve limpar esse cache.


Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Slm

1

Reinicie a máquina.


Esta é a solução "o grande martelo". Veja a resposta fornecida por Stephen Denne.
Ultralisk

1

A melhor prática é garantir que os arquivos de teste com os quais você está comparando sejam 2x maiores que o cache do controlador de matriz (ou a memória do sistema operacional Windows, se comparados em um convidado da vm), com um arquivo de teste mínimo de 1 GB. Isso garante que qualquer cache será negado. Usamos o SQLIO para benchmarking de disco; há muitas informações na documentação anexa.


Uma das coisas que estou tentando fazer é avaliar a rapidez com que nosso projeto se baseia em várias configurações. Eu realmente não posso aumentar o tamanho desses arquivos, eu acho. :)
Sebastiaan M

1

Fazendo eco a Greg, a maneira de solucionar esse problema é garantir que o conjunto de dados com o qual você está trabalhando exceda bastante a quantidade de RAM disponível. Se você estiver testando em uma plataforma de hardware que também inclua uma quantidade significativa de caches de controlador e disco, convém garantir que também esteja excedendo esses valores. Isso garantirá que o desempenho que você vê esteja mais vinculado ao desempenho real do hardware do que as otimizações de software introduzidas por todas essas camadas de cache.

Dito isto, se você está realmente apenas tentando limpar o cache de leitura de dados úteis antes de executar seus benchmarks que QUEREM usar cache de leitura, a maneira de fazer isso é ler em um único arquivo dimensionado apenas sob a memória do cache de leitura e faça algumas operações de arquivo para ele. Isso limpará o cache e o preencherá com esse único arquivo grande. Depois de fechá-lo, seu cache é efetivamente liberado dos dados importantes para você . A parte complicada é descobrir qual o tamanho desse arquivo, que atualmente pode muito bem ter 3 GB de tamanho; Nesse ponto, você pode precisar de vários arquivos indesejados de 1 GB para fazê-lo funcionar.


0

Eu acho que quase todas as opções serão "coisas manuais". No UNIX, é bastante padrão desmontar / remontar um dispositivo antes de cada benchmark ser executado, geralmente com um "newfs" acionado para uma boa medida. Não sei se você pode usar ferramentas de linha de comando no Windows para desmontar / montar dispositivos, mas se a automação é sua meta, vale a pena procurar esses utilitários.


1
No Linux, se desmonte / remuont não for uma opção, por algum motivo, você também poderá fazê-lo sync; echo 3 > /proc/sys/vm/drop_caches- embora isso afete todos os cache / buffers e não apenas aqueles pertencentes a um volume específico. Eu já procurei um truque semelhante para o Windows, mas não o encontrei.
21915 David Spillett

0

Veja esta resposta que acabei de publicar na minha própria pergunta no StackOverflow.

Basicamente: se você tentar CreateFileum identificador sem acesso de compartilhamento de gravação, ele liberará e invalidará o cache, mesmo se retornar um erro.

Espero que isto ajude!

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.