Como limpar o cache de leitura de disco do Windows?

13

Para o teste de desempenho, preciso limpar o cache de leitura de disco do Windows. Eu tentei googling mas não consegui encontrar nada além de reiniciar ou outras coisas manuais. Antes de ceder e fazer isso, gostaria de saber se alguém sabe de uma maneira de 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.

    
por Sebastiaan M 07.12.2009 / 20:01

9 respostas

3

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

    
por 07.12.2009 / 21:40
7

Eu fiz a mesma pergunta no Stack Overflow

link

Eu estava usando o Win XP, mas a melhor solução que surgiu foi:

  1. Execute algumas cópias de MemAlloc
  2. Com cada um, aloque grandes blocos de memória algumas vezes
  3. Use o Process Explorer para observar o tamanho do Cache do sistema reduzindo para níveis muito baixos
  4. Saia dos programas MemAlloc
por 08.05.2010 / 07:50
3

Para uma visão muito melhor do Cache do Sistema de Arquivos do Windows XP - tente ATM por Tim Murgent - permite que você veja o tamanho do Conjunto de Trabalho do cache do sistema de arquivos e o tamanho da Lista de Espera em uma visualização mais detalhada e precisa. Para o Windows XP - você precisa da versão antiga 1 do ATM, que está disponível para download aqui , pois o V2 e o V3 exigem o Server 2003, Vista ou superior.

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

    
por 20.11.2012 / 19:55
3

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

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

    
por 02.09.2013 / 13:40
1

Reinicialize a máquina.

    
por 07.12.2009 / 20:21
1
A melhor prática é garantir que os arquivos de teste com os quais você está comparando são 2x maiores que o cache do controlador de array (ou a memória do sistema operacional se o benchmarking em um guest da vm), com um arquivo de teste de no mínimo 1 GB. Isso garante que qualquer armazenamento em cache seja negado. Usamos SQLIO para benchmarking de disco; há uma riqueza de informações na documentação que acompanha.

    
por 07.12.2009 / 20:47
1

Fazendo eco a Greg, a maneira de contornar esse problema é garantir que o conjunto de dados com o qual você está trabalhando exceda em muito a quantidade de RAM disponível. Se você está fazendo testes em uma plataforma de hardware que também inclui uma quantidade significativa de caches baseados em controlador e disco, você deve garantir que você está excedendo esses valores também. Isso garantirá que o desempenho que você vê esteja mais vinculado ao desempenho de hardware real do que as otimizações de software que todas as camadas de cache introduzem.

Dito isto, se você está realmente apenas olhando para limpar o cache de leitura de dados úteis antes de executar seus benchmarks que querem usar o cache de leitura, a maneira de fazê-lo é ler em um único arquivo sob a sua leitura. -cache memória e fazer algumas operações de arquivo para ele. Isso limpará o cache e o preencherá com esse único arquivo grande. Uma vez que você fechá-lo, seu cache é efetivamente liberado dos dados que lhe interessam . A parte complicada é descobrir o tamanho do arquivo, que pode muito bem ser da ordem de 3 GB; Nesse ponto, você pode precisar de vários arquivos inúteis de 1 GB para que funcione.

    
por 07.12.2009 / 22:01
0

Acho que a maioria das opções será "manual". No UNIX, é bastante normal desmontar / remontar um dispositivo antes de cada execução de benchmark, muitas vezes com um "newfs" lançado 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 for sua meta, valeria a pena procurar por esses utilitários.

    
por 07.12.2009 / 20:15
0

Dê uma olhada em esta resposta I Acabei de postar na minha própria pergunta no StackOverflow.

Basicamente: Se você tentar CreateFile um identificador sem acesso de compartilhamento de gravação, ele irá liberar e invalidar o cache, mesmo que ele retorne um erro.

Espero que isso ajude!

    
por 09.10.2011 / 09:04