Como alternativa, preencha o cache com dados que você sabe que não serão usados no teste e, em seguida, execute o teste.
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.
Eu fiz a mesma pergunta no Stack Overflow
Eu estava usando o Win XP, mas a melhor solução que surgiu foi:
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.
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.
Reinicialize a máquina.
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.
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.
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!
Tags windows-7 windows-xp