У меня есть дополнительный вопрос к 377448, но недостаточно комментариев для комментариев.
Прежде чем меня начнут задавать один и тот же глупый вопрос, позвольте мне сказать, что я читал много похожих сообщений и ответов о кешировании, и я понимаю, что там происходит, но я не нашел ответа, который подходит для моего контекста. Что это?
VirtualBox, вопреки тому, что в настоящее время говорится в документации, не выделяет всю базовую память хоста при запуске гостевой виртуальной машины, а выделяет ее в соответствии с требованиями гостя. Вместо того, чтобы настраивать, тестировать и повторно настраивать базовую память для соответствия постоянно меняющейся виртуальной машине, я выделил ее более чем достаточно - 4 гигабайта.
Я заметил, что вскоре после загрузки виртуальная машина потребляет около 2 гигабайт, но со временем, даже если приложения, запущенные на виртуальной машине, в основном простаивают, кэширование памяти Linux медленно увеличивается до тех пор, пока не будет достигнут предел в 4 гигабайта.
Поскольку ОЗУ на ноутбуке очень дорого, а мои требования к обработке (производительности) низкие, я добавил команду cron @reboot, например:
@reboot root while true; do sleep 1; /sbin/sysctl -w vm.drop_caches=3; done
что исключает постоянный рост без заметного снижения производительности. Интервалы в 1 секунду могут быть слишком агрессивными, но я поэкспериментирую с этим позже.
Результатом я очень доволен, но это решение кажется грубым хаком.
Есть ли существующий метод настройки кэширования памяти на «ленивый» / «агрессивный» или «высокопроизводительный» / «низкопроизводительный» или путем предоставления некоторого ограничения размера кеша или интервала очистки кеша?
Кажется, у вас есть два противоречащих друг другу требования. «Я хочу выделить этому хосту 4G» и «Я не хочу, чтобы хост использовал 4G».
Помимо этого факта, что заставляет вас думать, что удаление этих кешей заставляет гипервизор сбрасывать память на карте?
На гипервизоре (хост виртуального бокса) может происходить подкачка по запросу - это нормально, но то, что вы думаете, вероятно, нет.
Запрос виртуальной памяти проходит в два этапа.
Когда виртуальная машина запускается, она фиксирует 4G памяти. Это сколько это жестяная банка есть, но не обязательно, сколько он действительно будет использовать.
Когда виртуальная машина начинает потреблять память, она будет выделять страницы по мере необходимости до того, что было зафиксировано. Распределение фактически помещает память в RAM / swap.
В вашем сценарии действительно виртуальная машина может (я не знаю модель виртуального бокса, но верю вам на слово) зафиксировать 4G памяти. По мере того, как виртуальная машина заполняет кэш страниц, она выделяет всю эту память, опять же, как вы упомянули. какой не будет Однако случается, что виртуальный бокс освобождает память, выделенную при удалении кешей на виртуальной машине.
Таким образом, вы очищаете кеш страницы, хотя кажется, что память на виртуальной машине свободна, память по-прежнему выделены и используются гипервизору.
Таким образом, вы не сохранили себе никакой памяти на главном ноутбуке, фактически вы просто потратили ее зря, потому что память, которую можно было использовать для предотвращения поиска ввода-вывода в виртуальной машине, больше недоступна.