Deshabilitar la caché de páginas de Linux para lecturas

Deshabilitar la caché de páginas de Linux para lecturas

¿Existe alguna forma de desactivar el almacenamiento en caché de páginas para lecturas en Linux? Más específicamente, me gustaría que mis procesos se lean directamente desde el disco.

La configuración de mi problema: estoy probando nuevas técnicas de procesamiento de consultas en Postgres y midiendo su tiempo de ejecución. Para tener una comparación precisa del tiempo de ejecución de diferentes métodos, necesito desactivar la lectura desde la memoria caché del sistema operativo.

He leído los siguientes enfoques pero ninguno de ellos se aplica a mi caso:

  1. Borre el caché usando echo 1 > /proc/sys/vm/drop_caches: Necesito llamar a esto en cada iteración de mi consulta, lo que arruinaría mis tiempos medidos finales.
  2. Uso O_DIRECTdentro del programa: no tengo control sobre cómo Postgres lee los archivos
  3. Montar mi dispositivo usando -o sync. Yo leoaquíque desactivará el almacenamiento en búfer de escritura, pero no estoy seguro de si también deshabilita la lectura desde el caché.
  4. Uso hdparm -W 0 /dev/sda1: Nuevamente, esto solo deshabilita el caché para escrituras.
  5. Utilice una secuencia de comandos específica de la aplicación explicadaaquí: Esto funcionaría si tuviera una sola aplicación, pero en mi entorno tengo un servidor Postgres como servicio (con muchos subprocesos) y un cliente. No estoy 100% seguro, pero parece que el script funciona para aplicaciones normales, no para servicios como Postgres.

información relacionada