mmap(): распространение изменений из базового файла в сопоставленную область

#linux #kernel #mmap

Вопрос:

У меня есть поток чтения, который mmap представляет файлы как общее сопоставление только для чтения. Другой поток перезаписывает области этого файла на диск с помощью write/fsync.

Как именно изменения распространяются обратно на отображение? Мои тесты показывают серьезные ошибки в считывателе страниц, и часы iowait jiffies работают довольно быстро. Точное измерение показывает, что 4-15 серьезных неисправностей в секунду могут привести к остановке протектора в диапазоне от 0 до 500 мс каждую секунду. Я хотел бы понять, в какой момент при написании темы соответствующие страницы читателя становятся недействительными. Затем, согласно тестам, ядро обновляет недействительные страницы при доступе из программы чтения (ленивая модель). Можно ли изменить его на обновление при признании недействительным: что-то похожее на madvise семантику /потребуется, но будет изменяться, пока существует сопоставление?