Переподписка ресурсов
Переподписка позволяет виртуально выделить виртуальным машинам больше ресурсов, чем физически доступно в кластере.
Внимание
Изменение параметров переподписки возможно только когда в кластере не созданы ВЦОД (за исключением ВЦОД управления)
Переподписка ЦПУ
Переподписка ЦПУ — это метод оптимизации использования ресурсов, который позволяет виртуальным машинам использовать больше виртуальных ядер (ВЦПУ), чем имеется физических ядер (ЦПУ) в кластере.
Основная формула перерасчета ВЦПУ в ЦПУ
Ключевой параметр default_cpu_overcommit_ratio — глобальный коэффициент переподписки в диапазоне от 1 до 4. Чем он выше, тем больше виртуальных ядер можно создать на одном физическом ядре. Этот коэффициент применяется ко всем ВМ по умолчанию, но может быть переопределен для каждой виртуальной машины индивидуально.
Механизмы переподписки ЦПУ
В Sharx Base доступны два механизма переподписки ЦПУ: тип доли shares и тип квоты quotas.
-
Тип доли
shares.Механизм доли
sharesопределяет относительные доли процессорного времени, которые получают ВМ. Он не гарантирует абсолютное время ЦПУ, но обеспечивает оптимальное распределение процессорных ресурсов относительно других ВМ.Формула расчета доли
Команда настройки
aaa cluster resource overcommit add --cpu_overcommit_type shares --default_cpu_overcommit_ratio {1-4}где
cpu_overcommit_type— тип переподписки ЦПУ. Установлено значениеshare(доли);default_cpu_overcommit_ratio— коэффициент переподписки ЦПУ в кластере по умолчанию. Возможные значения от1до4.
-
Тип квоты
quotas.Механизм квоты
quotasзадает фиксированную квоту процессорного времени в микросекундах, которое ВЦПУ может использовать в течение определенного периода. Квоты обеспечивают более строгий и предсказуемый контроль в распределении ресурсов.Чем выше коэффициент переподписки, тем ниже квота процессорного времени, т.е. допустимое время выполнения ВЦПУ ВМ.
Формула расчета квоты
Команда настройки
aaa cluster resource overcommit add --cpu_overcommit_type quotas --cpu_quota_period {10000-500000} --default_cpu_overcommit_ratio {1-4}где
cpu_overcommit_type— тип переподписки ЦПУ. Установлено значениеquotas(квоты);cpu_quota_period— период, в течение которого отслеживается квота. Задается в микросекундах. Возможные значения от10000до500000;default_cpu_overcommit_ratio— коэффициент переподписки ЦПУ в кластере по умолчанию. Возможные значения от1до4.
Команды управления переподпиской ЦПУ
Внимание
Изменение или удаление параметров переподписки возможно только когда в кластере не созданы ВЦОД (за исключением ВЦОД управления)
-
Чтобы проверить статус переподписки ЦПУ, введите
-
Обновить параметры переподписки ЦПУ
-
Удалить параметры переподписки
Важно
Команда удаляет все параметры переподписки: и ЦПУ и ОЗУ
Примечание
Пример изменения коэффициента переподписки ЦПУ для определенной ВМ описан в Руководстве пользователя в командной строке в статье Оптимизация ресурсов
Сравнение механизмов переподписки ЦПУ
Таблица — Сравнение механизмов переподписки ЦПУ.
| Критерий | Тип shares доли |
Тип quotas квоты |
|---|---|---|
| Принцип работы | Относительные доли процессорного времени | Абсолютная квота процессорного времени за период |
| Гибкость | Высокая | Ограниченная |
| Предсказуемость | Относительная, зависит от общей загрузки | Высокая, гарантированная квота |
| Рекомендуемые сценарии | Смешанные нагрузки, веб-сервисы | Приложения с жесткими требованиями к производительности. Например, базы данных |
Рекомендации по выбору
Тип shares рекомендуется для рабочих нагрузок с переменной активностью, где важно относительное распределение ресурсов.
Тип quotas рекомендуется для нагрузок, требующих гарантированного времени ЦПУ и предсказуемой производительности.
Коэффициент переподписки default_cpu_overcommit_ratio следует выбирать в зависимости от ожидаемой нагрузки и требований к производительности.
Переподписка ОЗУ
Переподписка ОЗУ — технология увеличения доступной оперативной памяти для виртуальных машин через механизм ballooning, позволяющий ВМ делиться частью своей памяти с другими виртуальными машинами на том же узле.
Последовательность настройки переподписки ОЗУ:
- Проверьте работу cgroup-экспортера.
- Настройте параметры переподписки ОЗУ.
- Включите механизм переподписки ОЗУ.
- Контролируйте работу кластера.
Требования к системе для переподписки ОЗУ
Для работы переподписки ОЗУ необходимо выполнить следующие условия на каждом узле кластера:
-
В конфигурации плагина
sdc-plgn-metricsдолжен быть настроен cgroup-экспортер.
Чтобы проверить работу cgroup-экспортера, введитеПример
В результате выполнения команды должен вернуться список ресурсов по каждому узлу
{ "2a808504-a385-4856-aa14-f7c1240d81cb": { "CurrentMemory": "0Gb", "MaxMemory": "0Gb", "memballoon": "0Gb", "memtotal": "1315Mb", "memusage": "0Gb", "memusage_ballooned": "0Gb", "memusage_percent": 0 }, "336b18d5-9a2a-4ac5-90d2-6dc479ec709e": { "CurrentMemory": "0Gb", "MaxMemory": "0Gb", "memballoon": "0Gb", "memtotal": "1315Mb", "memusage": "6Mb", "memusage_ballooned": "6Mb", "memusage_percent": 0 }, "d4de5a59-e11d-49aa-990c-8ca589611fe8": { "CurrentMemory": "0Gb", "MaxMemory": "0Gb", "memballoon": "0Gb", "memtotal": "1315Mb", "memusage": "0Gb", "memusage_ballooned": "0Gb", "memusage_percent": 0 } }Если cgroup-экспортер не настроен, то добавьте его в считывание командой
После добавления экспортера проверьте его считывание
-
На каждом узле в файле
/etc/sdc-envпеременные окружения имеют фактические значения. В примерах ниже показаны их значения по умолчанию, которые система использует автоматически.# Имя cgroup-экспортера. По умолчанию cgroup_exporter SDC_CGROUP_EXPORTER_NAME="cgroup_exporter" # Порт cgroup-экспортера. По умолчанию 9198 SDC_CGROUP_EXPORTER_PORT="9198"Примечание
Если вам необходимо изменить значения по умолчанию, вы можете явно задать их в файле
/etc/sdc-env. Убедитесь, что заданные значения соответствуют фактической конфигурации экспортера
Принцип работы и основные понятия
Основные понятия:
Балунинг ballooning — технология управления оперативной памятью в виртуализации, которая позволяет гипервизору временно «забирать» неиспользуемую память у одних виртуальных машин и перераспределять ее другим ВМ на том же физическом узле.
Порог срабатывания балунинга ballooning_threshold — уровень загруженности ОЗУ узла, с которого начинает работать механизм переподписки ОЗУ.
Лимит памяти узла node_memory_limit — максимальная загрузка ОЗУ узла, при достижении которой прекращается размещение новых ВМ.
Толерантность к переподписке overcommit_tolerance — уровень, определяющий объем памяти, которым может поделиться ВМ.
При включенной переподписке ОЗУ работает балунинг, при котором каждая виртуальная машина может отдавать часть своей памяти другим ВМ на том же узле.
Объем отдаваемой памяти зависит от показателей:
- Толерантности ВМ. Чем выше толерантность, тем больше памяти может отдать ВМ.
- Текущей загруженности узла. Чем выше загрузка, тем активнее работает балунинг.
Важно
При толерантности, равной 0, ВМ не делится своей памятью
Настройка переподписки ОЗУ
Действия для настройки переподписки ОЗУ:
-
Чтобы настроить переподписку ОЗУ, введите
aaa cluster resource overcommit update --ram_overcommit <RAM_OVERCOMMIT> --node_memory_limit <NODE_MEMORY_LIMIT> --default_overcommit_tolerance <DEFAULT_OVERCOMMIT_TOLERANCE>где
ram_overcommit— процент переподписки ОЗУ;node_memory_limit— лимит использования ОЗУ узла в процентах;default_overcommit_tolerance— толерантность ВМ к переподписке. Возможные значения от0до3.
В результате команды Sharx Base рассчитывает порог срабатывания балунинга
ballooning_thresholdпо формулеКритичные условия для назначения параметров переподписки ОЗУ:
- Для запуска балунинга необходимо выполнить условие
ballooning_threshold<node_memory_limit. - Разница между лимитами
node_memory_limit - 2% - ballooning_threshold ≥ 3%.
-
Чтобы обновить параметры переподписки ОЗУ, введите
-
Удалить параметры переподписки
Важно
Команда удаляет все параметры переподписки: и ЦПУ и ОЗУ
Внимание
Изменение или удаление параметров переподписки возможно только когда в кластере не созданы ВЦОД (за исключением ВЦОД управления)
Управление переподпиской ОЗУ
Внимание
Переподписку ОЗУ можно включить или выключить только из ВЦОД управления
-
Чтобы включить переподписку ОЗУ, введите
-
Чтобы выключить переподписку ОЗУ, введите
Внимание
Выключение переподписки возможно только при загруженности ОЗУ каждого узла ниже лимита использования ОЗУ
node_memory_limit -
Чтобы проверить статус переподписки ОЗУ, введите
После выполнения всех шагов система начнет автоматически перераспределять память между ВМ при достижении порога срабатывания балунинга на узлах.
Примечание
Пример изменения толерантности определенной ВМ к переподписке описан в Руководстве пользователя в командной строке в статье Оптимизация ресурсов