Отключить кэш страниц Linux для чтения

Отключить кэш страниц Linux для чтения

Есть ли способ отключить кэширование страниц для чтения в Linux? Точнее, я хотел бы, чтобы мои процессы читали напрямую с диска.

Постановка моей проблемы: Я пробую новые методы обработки запросов в Postgres и измеряю время их выполнения. Чтобы иметь точное сравнение времени выполнения различных методов, мне нужно отключить чтение из кэша ОС.

Я прочитал следующие подходы, но ни один из них не применим к моему случаю:

  1. Очистите кэш с помощью echo 1 > /proc/sys/vm/drop_caches: мне нужно вызывать его при каждой итерации моего запроса, что испортит мои окончательные измеренные значения времени.
  2. Использование O_DIRECTв программе: Я не могу контролировать, как Postgres читает файлы.
  3. Смонтировать мое устройство с помощью -o sync. Я прочиталздесьчто это отключит буферизацию записи, но я не уверен, отключит ли это также и чтение из кэша?
  4. Использование hdparm -W 0 /dev/sda1: Опять же, это отключает только кэширование для записей.
  5. Объяснение использования специфичного для приложения сценарияздесь: Это сработало бы, если бы у меня было одно приложение, но в моей настройке у меня есть сервер Postgres как служба (со многими потоками) и клиент. Я не уверен на 100%, но похоже, что скрипт работает для обычных приложений, а не для служб, таких как Postgres.

Связанный контент