После записи данных в файл, ОС при их чтении отдаст из кеша или с диска?
Есть большой файл. В который данные пишутся только вконец. ОС, как я понимаю, кеширует эти данные (т.е. не сразу сбрасывает на диск, а оставляет в памяти).
Так вот, два вопроса:
1. Читаем эти же данные (т.е. укажем смещение (которое равно предыдущей (до записи) длине файла) и длину только что записанных данных), ОС поймёт, что читаются именно те данные, которые записались и закешировались, и выдаст ли ОС эти данные из кеша?
2. Тот же самый вопрос, но если до чтения этих же данных были ещё новые данные дописаны.
Спрашиваю это вот почему. Есть приложение, которое хранит минифайлы склеенными в одном большом мегафайле (это для обхода ограничений на inodes). Минифайлы записываются в один поток всегда вконец мегафайла, никогда не модифицируются и не удаляются из мегафайла. И, как показывает практика, чаще всего именно только что записанный минифайл потребуется. И потребуется один раз, потом - намного реже. Т.е. логично его кешировать не по факту чтения, а по факту записи (тем более он уже в оперативной памяти при записи). А после чтения тут вообще логичнее наоборот, удалять его из кеша. Есть смысл сохранять его в кеше средствами приложения (например, в tmpfs), либо ОС сама это сделает через свой кеш?
зависит от настройки swappiness
типа ФС.
ну и на худой конец
vm.vfs_cache_pressure=50
vm.dirty_writeback_centisecs=15000
vm.overcommit_ratio = 100
vm.overcommit_memory = 1