Desative o cache de páginas do Linux para leituras

Desative o cache de páginas do Linux para leituras

Existe uma maneira de desativar o cache de páginas para leituras no Linux? Mais especificamente, gostaria que meus processos fossem lidos diretamente do disco.

A configuração do meu problema: estou testando novas técnicas de processamento de consultas no Postgres e medindo seu tempo de execução. Para ter uma comparação precisa do tempo de execução de diferentes métodos, preciso desativar a leitura do cache do sistema operacional.

Eu li as seguintes abordagens, mas nenhuma delas se aplica ao meu caso:

  1. Limpe o cache usando echo 1 > /proc/sys/vm/drop_caches: preciso chamar isso a cada iteração da minha consulta, o que atrapalharia meus tempos finais medidos.
  2. Use O_DIRECTdentro do programa: não tenho controle sobre como o Postgres lê os arquivos
  3. Monte meu dispositivo usando -o sync. Eu leioaquique desativará o buffer de gravação, mas não tenho certeza se também desativará a leitura do cache?
  4. Uso hdparm -W 0 /dev/sda1: Novamente, isso desabilita apenas o cache para gravações.
  5. Use um script específico do aplicativo explicadoaqui: Isso funcionaria se eu tivesse um único aplicativo, mas na minha configuração, tenho um servidor Postgres como serviço (com muitos threads) e um cliente. Não tenho 100% de certeza, mas parece que o script funciona para aplicativos regulares e não para serviços como o Postgres.

informação relacionada