Как настроить Linux для использования меньшего количества памяти для кэширования?

У меня есть дополнительный вопрос к 377448, но недостаточно комментариев, чтобы комментировать там.

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

VirtualBox, в отличие от того, что в настоящее время говорится в его документации, не выделяет полную базовую память от хоста при запуске гостевой виртуальной машины, а выделяет ее по требованию гостя. Вместо того, чтобы настраивать и тестировать стенды, а также перенастраивать базовую память под постоянно меняющуюся виртуальную машину, я выделил ее более чем достаточно - 4 гигабайта.

Я заметил, что вскоре после загрузки виртуальная машина потребляет около 2 гигабайт, но со временем, даже если приложения, работающие на виртуальной машине, в основном простаивают, кэширование памяти linux медленно увеличивается, пока не будет достигнут предел 4 гигабайта.

Так как оперативная память на ноутбуке драгоценна и мои требования к производительности (производительности) низки, я добавил команду cron @reboot следующим образом;

@reboot root while true; do sleep 1; /sbin/sysctl -w vm.drop_caches=3; done

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

Я очень доволен результатом, но это решение кажется грубым взломом.

Существует ли существующий метод для настройки кэширования памяти как "ленивый" / "агрессивный" или "высокопроизводительный" / "низкая производительность", или путем предоставления некоторого ограничения размера кэша или интервала очистки кэша?

1 ответ

У вас, кажется, есть два противоречивых требования. "Я хочу выделить 4G этому хосту" и "Я не хочу, чтобы хост использовал 4G".

Помимо этого факта, что заставляет вас думать, что удаление этих кэшей заставляет гипервизор отбрасывать память на карте?

На гипервизоре (хосте virtualbox) может происходить пейджинг по требованию - это нормально, но то, что вы думаете, происходит, вероятно, нет.

Есть два этапа, когда виртуальная память является запросом.

  • Что совершено
  • Что выделено

При запуске виртуальной машины она выделяет 4 ГБ памяти. Это сколько он может иметь, но не обязательно сколько он будет фактически использовать.

Когда виртуальная машина начинает потреблять память, она распределяет страницы по мере необходимости до того, что было зафиксировано. Распределение фактически помещает память в оперативную память / подкачку.

В вашем сценарии, действительно, виртуальная машина может (я не знаю модель виртуального ящика, но я верю вашему слову) выделить 4G памяти. Когда виртуальная машина заполняет кеш страниц, она снова выделит всю эту память, как вы уже упоминали. Однако этого не произойдет, если виртуальный ящик освободит память, выделенную при удалении кэшей на виртуальной машине.

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

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

Другие вопросы по тегам