Подобные эффекты можно получить с помощью fdatasync и posix_fadvise (advice = POSIX_FADV_DONTNEED.
fdatasync просто передает ваши данные на диск, но не выводит их из кэша.
Если вы пишете файл журнала с предельной скоростью (и почти никогда не читаете его), страницы файла журнала могут часто выталкивать больше полезных страниц из буферного кэша. Это не желательно. С O_DIRECT они не будут, хотя.
Но для достижения аналогичного эффекта вы можете использовать posix_fadvise, чтобы попросить ядро удалить любые кэшированные страницы для заданного диапазона заданного файла (или все, если хотите).
Если, например, вы пишете базу данных с высокой частотой записи и ваш журнал транзакций заполняется со скоростью 10 Мбит / с, вы можете избавиться от кэшированных страниц каждые 100M или что-то еще, чтобы позволить памяти быть более полезным для других целей.