#linux #file #caching
#linux #файл #кэширование
Вопрос:
Linux использует оставшуюся память для своего файлового кэша
В моем приложении (написанном на C ) я хотел бы время от времени явно удалять грязные страницы на диски (использование O_DIRECT мне не подходит)
Я попробовал fflush(), но, похоже, это не то, что я хотел
Есть ли какой-либо способ удалить грязные страницы файлового кэша ОС на диски?
Спасибо
Ответ №1:
Вы можете использовать sync_file_range()
для поощрения очистки в Linux, но, к сожалению, вы не можете использовать sync_file_range()
для гарантии надежности файлов / целостности данных — это просто подсказка, которая может помочь начать очистку (смотрите Это Видео Linux Plumbers Conference 2019, в котором разработчик Postgres Андрес Фройнд жалуется на sync_file_range()
manpage и ответ от разработчика файловой системы Яна Кары). Короче говоря: это может помочь вызвать очистку, но вам нужно будет добавить / использовать что-то еще, чтобы узнать долговечность.
Я полагаю, что все обычные sync
вызовы стиля файлового дескриптора ( fsync()
и fdatasync()
т. Д.) Также намекают на то, что вы хотите, чтобы обратная запись начиналась, но более жестким способом по сравнению с sync_file_range()
(потому что они также принудительно очищают энергонезависимые кэши устройств).)…