Перейти к содержанию

Переподписка ресурсов

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

Внимание

Изменение параметров переподписки возможно только когда в кластере не созданы ВЦОД (за исключением ВЦОД управления)

Переподписка ЦПУ

Переподписка ЦПУ — это метод оптимизации использования ресурсов, который позволяет виртуальным машинам использовать больше виртуальных ядер (ВЦПУ), чем имеется физических ядер (ЦПУ) в кластере.

Основная формула перерасчета ВЦПУ в ЦПУ

CPU = VCPU/cpu_overcommit_ratio

Ключевой параметр default_cpu_overcommit_ratio — глобальный коэффициент переподписки в диапазоне от 1 до 4. Чем он выше, тем больше виртуальных ядер можно создать на одном физическом ядре. Этот коэффициент применяется ко всем ВМ по умолчанию, но может быть переопределен для каждой виртуальной машины индивидуально.

Механизмы переподписки ЦПУ

В Sharx Base доступны два механизма переподписки ЦПУ: тип доли shares и тип квоты quotas.

  1. Тип доли shares.

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

    Формула расчета доли

    shares = 4096/cpu_overcommit_ratio
    

    Команда настройки

    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.
  2. Тип квоты quotas.

    Механизм квоты quotas задает фиксированную квоту процессорного времени в микросекундах, которое ВЦПУ может использовать в течение определенного периода. Квоты обеспечивают более строгий и предсказуемый контроль в распределении ресурсов.

    Чем выше коэффициент переподписки, тем ниже квота процессорного времени, т.е. допустимое время выполнения ВЦПУ ВМ.

    Формула расчета квоты

    cpu_quota = cpu_quota_period/cpu_overcommit_ratio
    

    Команда настройки

    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.

Команды управления переподпиской ЦПУ

Внимание

Изменение или удаление параметров переподписки возможно только когда в кластере не созданы ВЦОД (за исключением ВЦОД управления)

  1. Чтобы проверить статус переподписки ЦПУ, введите

    aaa cluster resource overcommit show
    

  2. Обновить параметры переподписки ЦПУ

    aaa cluster resource overcommit update --cpu_overcommit_type <CPU_OVERCOMMIT_TYPE>
                                           --default_cpu_overcommit_ratio <DEFAULT_CPU_OVERCOMMIT_RATIO>
    

  3. Удалить параметры переподписки

    Важно

    Команда удаляет все параметры переподписки: и ЦПУ и ОЗУ

    aaa cluster resource overcommit del
    

Примечание

Пример изменения коэффициента переподписки ЦПУ для определенной ВМ описан в Руководстве пользователя в командной строке в статье Оптимизация ресурсов


Сравнение механизмов переподписки ЦПУ

Таблица — Сравнение механизмов переподписки ЦПУ.

Критерий Тип shares доли Тип quotas квоты
Принцип работы Относительные доли процессорного времени Абсолютная квота процессорного времени за период
Гибкость Высокая Ограниченная
Предсказуемость Относительная, зависит от общей загрузки Высокая, гарантированная квота
Рекомендуемые сценарии Смешанные нагрузки, веб-сервисы Приложения с жесткими требованиями к производительности. Например, базы данных

Рекомендации по выбору

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

Тип quotas рекомендуется для нагрузок, требующих гарантированного времени ЦПУ и предсказуемой производительности.

Коэффициент переподписки default_cpu_overcommit_ratio следует выбирать в зависимости от ожидаемой нагрузки и требований к производительности.


Переподписка ОЗУ

Переподписка ОЗУ — технология увеличения доступной оперативной памяти для виртуальных машин через механизм ballooning, позволяющий ВМ делиться частью своей памяти с другими виртуальными машинами на том же узле.

Последовательность настройки переподписки ОЗУ:

  1. Проверьте работу cgroup-экспортера.
  2. Настройте параметры переподписки ОЗУ.
  3. Включите механизм переподписки ОЗУ.
  4. Контролируйте работу кластера.

Требования к системе для переподписки ОЗУ

Для работы переподписки ОЗУ необходимо выполнить следующие условия на каждом узле кластера:

  1. В конфигурации плагина sdc-plgn-metrics должен быть настроен cgroup-экспортер.
    Чтобы проверить работу cgroup-экспортера, введите

    scheduler report mem
    

    Пример

    В результате выполнения команды должен вернуться список ресурсов по каждому узлу

    {
       "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-экспортер не настроен, то добавьте его в считывание командой

    metrics exporter add --name cgroup_exporter --port 9198
    

    После добавления экспортера проверьте его считывание

    scheduler report mem
    

  2. На каждом узле в файле /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, ВМ не делится своей памятью

Настройка переподписки ОЗУ

Действия для настройки переподписки ОЗУ:

  1. Чтобы настроить переподписку ОЗУ, введите

    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 = 100 - ram_overcommit
    

    Критичные условия для назначения параметров переподписки ОЗУ:

    • Для запуска балунинга необходимо выполнить условие ballooning_threshold < node_memory_limit.
    • Разница между лимитами node_memory_limit - 2% - ballooning_threshold ≥ 3%.
    Пример
    aaa cluster resource overcommit update --ram_overcommit 40 
                                           --node_memory_limit 98 
                                           --default_overcommit_tolerance 0
    

    В данном случае Sharx Base рассчитает

    ballooning_threshold = 100 - 40 = 60%
    

    Разница между лимитами

    node_memory_limit - 2% - ballooning_threshold = 98% - 2% - 60% = 36%
    

    Так как 36% ≥ 3%, параметры переподписки ОЗУ установлены корректно

  2. Чтобы обновить параметры переподписки ОЗУ, введите

    aaa cluster resource overcommit update --ram_overcommit <RAM_OVERCOMMIT> 
                                        --node_memory_limit <NODE_MEMORY_LIMIT>
                                        --default_overcommit_tolerance <DEFAULT_OVERCOMMIT_TOLERANCE>
    

  3. Удалить параметры переподписки

    Важно

    Команда удаляет все параметры переподписки: и ЦПУ и ОЗУ

    aaa cluster resource overcommit del
    

Внимание

Изменение или удаление параметров переподписки возможно только когда в кластере не созданы ВЦОД (за исключением ВЦОД управления)

Управление переподпиской ОЗУ

Внимание

Переподписку ОЗУ можно включить или выключить только из ВЦОД управления

  1. Чтобы включить переподписку ОЗУ, введите

    aaa cluster resource overcommit ballooning enable
    

  2. Чтобы выключить переподписку ОЗУ, введите

    aaa cluster resource overcommit ballooning disable
    

    Внимание

    Выключение переподписки возможно только при загруженности ОЗУ каждого узла ниже лимита использования ОЗУ node_memory_limit

  3. Чтобы проверить статус переподписки ОЗУ, введите

    aaa cluster resource overcommit show
    

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

Примечание

Пример изменения толерантности определенной ВМ к переподписке описан в Руководстве пользователя в командной строке в статье Оптимизация ресурсов