Выделение пространства подкачки с помощью KVM

Выделение пространства подкачки с помощью KVM

Рассмотрим следующий сценарий: хост с 2 GiB запускает несколько гостей с использованием KVM. Каждому гостю обычно не нужно много памяти; им дается 256 MiB каждому и запускаются службы, которые в основном бездельничают. Однако иногда гостям требуется больше памяти. Прямо сейчас у каждого гостя мало оперативной памяти, но есть собственное пространство подкачки. Я заметил, что используется небольшая часть подкачки. У меня никогда не было проблем с такой конфигурацией, но просто из любопытства:

Какова оптимальная стратегия распределения свопов?

  1. Назначьте каждому гостю собственное пространство подкачки с его соответствующих дисков и выделите гостям только небольшой объем памяти с хоста. (Это то, что я делаю сейчас.)
  2. Выделите хосту больший объем пространства подкачки и не выделяйте его гостям, а также выделите больше памяти гостям.

Поможет ли раздувание памяти улучшить ее производительность?

решение1

«Иногда гостям требуется больше памяти» — звучит как хорошее применениеперегрузка памяти. Идея в том, что вы назначаете каждому гостю большой объем памяти (больше, чем вы можете фактически выделить), потому что они, как правило, не используют ее. Затем вы делаете расчеты, чтобы убедиться, что у вас достаточно места подкачки, чтобы гости могли фактически выгрузить данные на диск в худшем случае, когда они все фактическиделатьиспользуйте всю эту память.

Пространство подкачки идет нахозяинмашина, и она должна подчиняться

Пространство подкачки хоста = сумма всей гостевой памяти + рекомендуемое пространство подкачки хоста

чтобы это было безопасно.

Итак, если у вас 10 гостей и 2 ГиБ оперативной памяти, вы можете поэкспериментировать с чем-то вроде

  • 512 МБ ОЗУ на гостя (512 * 10 = 5120 МБ всего)
  • 2 GiB подкачки на хосте

Это означает, что для безопасной обработки этого объема пространство подкачки на вашем хосте должно быть не менее 512 * 10 + 2048 = 7168 МиБ, при условии, что вы можете выделить хосту 2 ГиБ подкачки (для такого небольшого объема памяти хоста это рекомендуется).

Всегда сначала проверяйте такие настройки, чтобы убедиться, что ваша машина с ними справится. А еще лучше — провести сравнительный анализ, который позволит вам поэкспериментировать с различными вариантами загрузки и выбрать тот, который работает лучше всего.

решение2

У @ndt хорошая процедура. Мой сценарий другой, поэтому я применяю другой метод.

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

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

решение3

Принятый ответ неверен:

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

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

Вам также следует использовать другой виртуальный диск в качестве диска подкачки, поскольку вы не хотите делать его снимок/резервную копию вместе с другими дисками с данными.

Поскольку пространство подкачки может быть нестабильным, вы также можете использовать cache=unsafe или использовать zram/zswap для повышения производительности.

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

Связанный контент