Product SiteDocumentation Site

17.4. Перераспределение ресурсов с помощью KVM

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

Поддержка Xen

Гипервизор Xen не поддерживает перераспределение процессорных ресурсов. Попытки перераспределения могут нарушить стабильность работы системы и привести к сбою размещающей системы и виртуальных машин.
Перераспределение памяти
Большинство операционных систем и приложений не использует 100% доступной оперативной памяти. Из этого можно извлечь пользу с помощью KVM, разрешив виртуальным машинам использовать больше памяти, чем им физически доступно.
KVM организует работу виртуальных машин в виде процессов Linux. Виртуальным машинам не выделяется физическая память, а поскольку они функционируют как процессы, каждому процессу может быть выделена память по запросу. Так, если гостевая операционная система запрашивает больше памяти, процессу будет выделена память. Виртуальная машина использует лишь незначительно больше физической памяти, чем его виртуализированная операционная система.
Когда физическая память практически занята или процесс неактивен на протяжении какого-то времени, Linux поместит память процесса в область подкачки (swap), которая представляет собой раздел на жестком диске или отдельный диск, используемый для расширения виртуальной памяти. Стоит заметить, что область подкачки работает гораздо медленнее по сравнению с оперативной памятью.
Так как виртуальные машины KVM на самом деле являются процессами Linux, используемая виртуализированными гостями память может быть помещена в область подкачки, если гость неактивен. Общий объем памяти, который можно теоретически перераспределить, не ограничивается общим объемом доступной области подкачки и физической памяти. Это может привести к проблемам, если гостевые системы используют всю выделенную им память. При нехватке пространства подкачки для виртуальных машин их процессы будут вызывать процесс pdflush, который освобождает память за счет принудительного прерывания других процессов. Это достаточно опасно, так как pdflush может прервать работу виртуальных машин или других системных процессов, что, в свою очередь, может привести к ошибкам файловой системы и даже повредить виртуализированные гостевые системы так, что их вообще невозможно будет загрузить.

Warning

Если области подкачки не хватает, работа гостевых операционных систем будет принудительно завершена. Поэтому всегда нужно помнить о том, что не стоит перераспределять больше памяти, чем доступно в области подкачки.
Раздел swap используется для размещения не используемой активно памяти на жестком диске с целью повышения производительности. Размер раздела подкачки рассчитывается на основе объема оперативной памяти и коэффициента перераспределения (обычно 0.5, то есть 50%). Рекомендуется его увеличить, если вы намереваетесь использовать возможности перераспределения памяти с KVM. Таким образом, формула расчета будет выглядеть так:
(0.5 * RAM) + (overcommit ratio * RAM) = Recommended swap size

Дальнейшую информацию можно найти в Базе знаний.
Другой способ расчета коэффициента состоит в умножении числа виртуальных машин на 10. Но это будет работать только при определенной нагрузке (если виртуализация не использует 100% ресурсов). Значение коэффициента в большинстве случаев подбирается индивидуально в процессе тестирования.
Перераспределение ресурсов виртуализированных процессоров
Гипервизор KVM поддерживает возможности перераспределения виртуализированных процессоров при условии, что это позволяет нагрузка на виртуализированные гостевые системы. Соблюдайте осторожность, так как приближенные к 100% нагрузки могут привести к потере запросов и недопустимо долгому времени ответа.
Процессоры проще всего перераспределять, если каждой виртуальной машине назначен только один виртуальный процессор. В этом случае планировщик Linux будет особенно эффективен. KVM сможет без проблем перераспределять до пяти процессоров виртуальных машин с неполной загрузкой.
Нельзя перераспределять ресурсы симметричных многопроцессорных гостей на ядрах, число которых превышает физическое число процессорных ядер. Так, например, гостевая система с четырьмя VCPU не должна выполняться на узле с процессором с двойным ядром, так как в этом случает значительно пострадает производительность.
Допускается назначение числа виртуальных процессоров гостевой системы, которое не превышает число физических ядер. Например, выполнение виртуализированных гостевых систем с четырьмя VCPU на узле с четырьмя ядрами. В этой конфигурации гостевые системы с неполной нагрузкой будут эффективно функционировать.

Сначала проверьте

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