Поскольку при монтировании ext3 в перезаписываемом режиме существует несколько вещей, которые обновляются, как последняя дата монтирования. Попробуйте, если это также происходит, когда Вы монтируетесь с -o ro
.
Если все пойдет хорошо, ваше ядро должно решить "сделать все правильно" само. Оно использует много причудливых эвристик, чтобы решить, что подменить и что сохранить, когда есть давление в памяти. Эти эвристики были тщательно собраны действительно умными людьми с большим опытом в управлении памятью и уже достаточно хороши, что их довольно трудно улучшить.
Кернел использует комбинацию таких вещей, чтобы решить, что подкачивать:
tmpfs
всегда грязная (если только это не свежая страница, заполненная нулями), потому что она ничем не подкреплена.mprotect()
.Короткий ответ: нет, вы не можете напрямую переопределить решения кернела о том, как управлять памятью.
.группы предназначены для управления приложениями, а не файловыми системами. То, что вам нужно, должно быть либо sysctl, либо возможностью монтирования, так как это для целой файловой системы. К сожалению, не похоже, что ни одна из этих двух возможностей была создана для этой проблемы. Вероятно, это связано с тем, насколько уникальна такая проблема.
Чтобы обойти это, вы можете попробовать написать cronjob типа:
*/5 * * * * find /tmp -type f -exec cat {} \; >/dev/null 2>&1
Это должно заставить ядро прочитать все файлы, в которых они находятся, что заставит страницы поменяться обратно в память.
Тем не менее, файлы, к которым часто обращается ваше приложение, будут делать по существу то же самое, что мы делаем в cronjobе (и только для конкретных файлов, которые оно на самом деле использовало вместо всего монтирования). Я не вижу большого преимущества в этом.
Какова реальная цель?
.