Как к make-файлам в TMPFS более вероятно для свопинга

Поскольку при монтировании ext3 в перезаписываемом режиме существует несколько вещей, которые обновляются, как последняя дата монтирования. Попробуйте, если это также происходит, когда Вы монтируетесь с -o ro.

7
13.04.2017, 15:36
2 ответа

Если все пойдет хорошо, ваше ядро должно решить "сделать все правильно" само. Оно использует много причудливых эвристик, чтобы решить, что подменить и что сохранить, когда есть давление в памяти. Эти эвристики были тщательно собраны действительно умными людьми с большим опытом в управлении памятью и уже достаточно хороши, что их довольно трудно улучшить.

Кернел использует комбинацию таких вещей, чтобы решить, что подкачивать:

  • Как недавно память была использована.
  • Была ли память изменена с тех пор, как она была картирована. Так, например, разделяемая библиотека будет вытеснена раньше памяти кучи, потому что память кучи грязная и ее нужно записать подкачки, в то время как разделяемая библиотека mapped memory может быть снова загружена из оригинального файла на диске, если она снова понадобится, так что нет необходимости записывать эти страницы подкачки. Здесь вы должны понимать, что память tmpfs всегда грязная (если только это не свежая страница, заполненная нулями), потому что она ничем не подкреплена.
  • Подсказки из mprotect().
  • Как и многие другие.

Короткий ответ: нет, вы не можете напрямую переопределить решения кернела о том, как управлять памятью.

.
6
27.01.2020, 20:17

группы предназначены для управления приложениями, а не файловыми системами. То, что вам нужно, должно быть либо sysctl, либо возможностью монтирования, так как это для целой файловой системы. К сожалению, не похоже, что ни одна из этих двух возможностей была создана для этой проблемы. Вероятно, это связано с тем, насколько уникальна такая проблема.

Чтобы обойти это, вы можете попробовать написать cronjob типа:

*/5 * * * * find /tmp -type f -exec cat {} \; >/dev/null 2>&1

Это должно заставить ядро прочитать все файлы, в которых они находятся, что заставит страницы поменяться обратно в память.

Тем не менее, файлы, к которым часто обращается ваше приложение, будут делать по существу то же самое, что мы делаем в cronjobе (и только для конкретных файлов, которые оно на самом деле использовало вместо всего монтирования). Я не вижу большого преимущества в этом.

Какова реальная цель?

.
2
27.01.2020, 20:17

Теги

Похожие вопросы