В файловом вводе-выводе C флаг O_DIRECT
можно использовать для минимизации эффектов кэширования для файла, который обрабатывается open()
ed. Я так понимаю, что это не фича POSIX, присутствует в ядре линукса с версии 2.4.10, и что Линус вообще против интерфейса. Под NetBSD, похоже, работает так, как рекламируется. Пример вызова:
int fd = open(filename, O_DIRECT);
Я пытаюсь написать некоторые низкоуровневые утилиты для тестирования дисков, и использование O_DIRECT
выглядит потенциально хорошим способом измерения производительности диска и диска без влияния файловой системы ОС/кеша блоков. В идеале я хотел бы иметь возможность запускать тест на Linux, Windows (Cygwin подходит), Mac OS X и BSD. Является ли O_DIRECT
лучшим способом обхода дисковых кешей ОС с точки зрения переносимости и надежности для бенчмаркинга? Есть ли альтернативы?