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.