Назад | Перейти на главную страницу

Разве файл подкачки в гостевых KVM не расточителен? Есть ли способ лучше?

Итак, я запускаю группу гостей на нескольких серверах, и в настоящее время мое «стандартное» разделение на гостевые разделы выглядит следующим образом:

  1. 1 ГБ для / boot
  2. 4-8 ГБ для подкачки
  3. остальное для /

Я выделяю каждому гостю разное количество оперативной памяти в зависимости от потребностей приложения, работающего в нем. Своп тоже зависит от приложения.

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

Однако мне это кажется довольно расточительным: я использую от 4 до 8 ГБ дискового пространства для каждого гостя только потому, что ему это может понадобиться пару раз в день? Учитывая, что эти гости обычно имеют размер 20 ГБ, в основном это хостинг кода (серверы баз данных отдельные), это довольно большой процент.

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

Предлагаемые подходы (которые я видел):

  1. использовать своп в гостевой
  2. перегружать хозяина

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

Итак, как лучше всего использовать это время?

Я предлагаю оставить все как можно проще: управление памятью само по себе сложная тема, и последнее, что вам нужно, - это сбой гостя из-за преждевременной / ненужной оптимизации.

2 ГБ пространства подкачки - разумная отправная точка для маленьких гостей, 4/8 ГБ - для больших. Вы можете использовать тонкие тома для свопа, но для таких небольших размеров это не имеет большого значения.

Удалите гостевые пространства подкачки. Выделить гостевую память для не перегрузить память хоста. При необходимости увеличьте объем памяти

При желании включите слияние одной страницы ядра (KSM) чтобы получить некоторую дедупликацию.


Предполагается, что пространство подкачки должно быть недорогим, чтобы оправдать его в 100 раз медленнее, чем DRAM. На мой взгляд, если это дорого и медленнее и для этого требуется какая-то схема тонкого выделения ресурсов, то оставлять ее не стоит.

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