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