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

Процессоры

Информация о процессорах ВМ

Для просмотра детальной информации о процессорах ВМ необходимо в разделе Виртуальные машины выбрать целевую ВМ и в открывшемся окне перейти в раздел Процессоры.

В разделе Процессоры доступен просмотр следующей информации:

  • Количество сокетов.

  • Количество ядер на сокет.

  • Потоков на ядро.

  • Общее количество потоков.

  • Максимальное количество потоков.

  • Режим определения.

    Режим эмулирования CPU.

  • Модель.

    Эмулируемая модель процессора.

  • Приоритет vCPU ВМ.

    Приоритет виртуальных процессоров.

  • Частота.

  • Кол-во минимально гарантированных vCPU.

  • Приоритет виртуальных процессоров (vCPU).

  • Дополнительные функции vCPU.

С помощью кнопки Изменение настроек процессоров открывается меню изменения настроек процессора.


Изменение количества vCPU

При нажатии кнопки Изменение количества vCPU в открывшемся окне необходимо указать имеющееся количество и максимальное количество процессоров, после чего подтвердить операцию, нажав кнопку ОК.

Не рекомендуется создавать ВМ c количеством vCPU больше, чем физических ядер на хосте.

Пример расчета

Например, если в сервере 2 процессора по 28 физических ядер, то рекомендуемый максимум vCPU равен 56.

Для добавления vCPU с включенным питанием ВМ («горячее» добавление) параметр Максимальное количество vCPU рекомендуется устанавливать больше.

При изменении параметра Максимальное количество vCPU топология подстраивается под этот параметр, то есть включенная ВМ определяет именно Максимальное количество vCPU, но при этом только на Общее количество vCPU подключается «питание» и менять можно только Общее количество vCPU, а Максимальное количество vCPU определяется неактивными (без «питания») и не может быть изменено при включенной ВМ. Таким образом, при включенной ВМ количество vCPU можно задать не больше ранее установленного максимального количества vCPU.


Изменение топологии vCPU

При нажатии кнопки Изменение топологии vCPU в открывшемся окне необходимо задать количество сокетов, ядер на сокет и потоков, после чего подтвердить операцию, нажав кнопку ОК.

Изменение топологии процессора предназначено для соответствия требованиям ОС ВМ. Некоторые ОС не поддерживают работу с многоядерными процессорами, некоторые ограничивают количество сокетов CPU, а некоторые ОС ограничивают количество ядер на сокет.


Режим определения и модель

При нажатии кнопки Режим определения и модель отображается оптимальный процессор, а также раскрывающийся список выбора режима определения процессора.

Может принимать значения:

default - назначаются виртуальные процессоры. Если ОС ВМ чувствительна к набору инструкций центрального процессора, то использование виртуальных процессоров может не удовлетворять требованиям ОС ВМ. Доступные функции соответствуют модели процессора qemu64

host-model - модель, аналогичная физическому процессору, с незначительными ограничениями. Доступные функции соответствуют узлу, на котором расположена ВМ. Выбор данной опции может ограничивать возможность переноса виртуальных машин: машины могут переноситься только на узлы с похожими наборами инструкций.

host-passthrough - фактическая трансляция полного комплекта инструкций и модели физического процессора. Доступные функции соответствуют узлу, на котором расположена ВМ. Выбор данной опции ограничивает возможность переноса виртуальных машин: машины можно переносить только на узлы с идентичными наборами инструкций.

custom - выбор модели процессора из списка. Необходимо учитывать предоставляемые наборы инструкций выбираемой модели и ограничения для ОС ВМ перед сменой типа процессора на custom. Доступные функции соответствуют набору инструкций для каждого процессора, определённого в гипервизоре.

Необходимо выбрать режим, после чего подтвердить операцию, нажав кнопку ОК.

Модель процессора может влиять на функциональность ОС ВМ и на возможность переноса ВМ внутри кластера.

Информация о доступных функциях узла расположена в разделе подробного просмотра узла Оборудование - Процессоры.


Изменение привязок vCPU

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

Внимание

Эту опцию рекомендуется применять только к высоко нагруженным ВМ, перенос которых невозможен.

При нажатии кнопки Изменение привязок vCPU в открывшемся окне необходимо заполнить привязку процессоров ВМ к физическим, после чего подтвердить операцию, нажав кнопку ОК.

Необходимо указать номер виртуального процессора и через двоеточие номер физического процессора сервера виртуализации.

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

Параметр 0:0 привязывает ВМ к одному процессору.

Ограничения

Привязка процессоров ВМ к физическим ядрам ограничивает производительность сервера.

Физическое ядро, привязанное к CPU виртуальной машины, ограничивает производительность сервера.

Физическое ядро, привязанное к CPU виртуальной машины, будет использоваться только для этой ВМ.

Изменение привязок процессоров

Для привязки vCPU0 и vCPU1 к node_cpu4 и node_cpu5 необходимо указать 0:4 1:5. Нумерация процессоров начинается с 0 (node_cpu0). vcpu_binding.png


Изменение приоритета vCPU

При нажатии кнопки Изменение приоритета vCPU в открывшемся окне необходимо выбрать из раскрывающегося списка базовый приоритет процессора, детальный приоритет процессора, гарантированное количество vCPU, после чего подтвердить операцию, нажав кнопку ОК.

Приоритет выделения процессорного времени ВМ может понизить или повысить приоритет выделения ресурсов для ВМ.

Есть 2 параметра приоритета процессорного времени ВМ:

  • Приоритет vCPU.

    Может принимать значение: LOW, MEDIUM, HIGH.
    По умолчанию Приоритет vCPU у ВМ средний (MEDIUM). Это означает, что после выполнения команды nice на каждый процесс ВМ на узле ставится приоритет 10. Низкий (LOW) приоритет соответствует 19. Высокий (HIGH) приоритет соответствует 1.

  • Приоритет vCPU ВМ.

    Может принимать значение: от 2 до 10000 (максимальное количество ВМ на кластер).
    По умолчанию Приоритет vCPU ВМ у всех ВМ 1024. Это означает, что гипервизор считает ВМ одинаково приоритетными. Изменение Приоритета vCPU ВМ от 2 до 10000 позволяет изменить относительную приоритезацию процессорного времени ВМ относительно других ВМ. Настраиваемый параметр Приоритет vCPU ВМ учитывается для ВМ в целом, при этом количество vCPU не учитывается. Таким образом, рекомендуется увеличить Приоритет vCPU ВМ по мере увеличения количества vCPU.

Примечание

Это относительная расстановка приоритетов, а не абсолютная мера времени. Приоритезация вступает в силу только в том случае, если перегружены процессоры узла, vCPU от разных ВМ конкурируют друг с другом за процессорное время узла. Таким образом, изменение Приоритет vCPU ВМ не даёт N единиц процессорного времени. То есть в периоды, когда 2 ВМ нуждаются в процессорном времени, а свободного времени недостаточно для удовлетворения обоих, доступное свободное процессорное время будет выделено ВМ, соответствующим соотношению общих ресурсов.

Производительность в зависимости от приоритета vCPU ВМ

Тест на производительность на разных ВМ (выполняется одновременно). На рисунке показаны 3 процесса ВМ (см. столбец %CPU).

cpu_shares_3_vms.png

С приоритетом - 1024 (%CPU - 50):

cpu_shares_1024.png

С приоритетом - 512 (%CPU - 25):

cpu_shares_512.png

Время выполнения теста согласуется с приоритетом.


vNUMA

На данный момент по умолчанию у ВМ есть всегда только один vNUMA узел, к которому относятся все vCPU.

Пример одной vNUMA в ВМ с 32 vCPU

image

При включении настройки трансляции топологии vNuma (Настройки контроллера), если у ВМ максимальное количество vCPU больше 8, то количество vNuma узлов ВМ равно количеству Numa узлов узла. Максимальное количество vCPU и оперативная память делятся поровну между vNuma узлами ВМ.


NUMA

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

Для просмотра текущей статистики по Numa необходимо выполнить команду numastat, для ВМ - numastat -p qemu.

Для просмотра id включенной ВМ необходимо выполнить команду vm info {vm_name or vm_id}.


NUMA и KSM

Рекомендуется при включении сервиса numad отключить параметр режим дедуплицирования памяти между NUMA nodes (Merge across nodes) в Настройках KSM узла.


Изменение частоты vCPU

При нажатии кнопки Изменение частоты vCPU в открывшемся окне необходимо указать частоту в МГц, после чего подтвердить операцию, нажав кнопку ОК.


Ограничение частоты vCPU

VMware - ограничение ресурсов виртуальных машин

Имеется виртуальная машина с приведенными ниже характеристиками.

Характеристики ВМ

vmware_cpu_1.png

Параметры Limit, Reservation и Shares для пулов ресурсов в VMware vCenter / ESX устанавливаются в соответствии с примером.

Параметры Limit, Reservation и Shares для пулов ресурсов

vmware_cpu_0.png

Этими тремя параметрами определяется потребление виртуальными машинами оперативной памяти и процессорных ресурсов хоста VMware ESX.

  • Параметр Limit определяет ограничение потребления физических ресурсов виртуальной машиной (в пределах хоста ESX) или пулом (в пределах кластера) при любых обстоятельствах.

    Если установить виртуальной машине Limit в 333 МГц, то именно с такой максимальной производительностью и будет работать ее vCPU, даже если на хосте с физическими процессорами по 3400 МГц больше никаких машин нет. При этом, если для виртуальной машины установлен Limit в 333 МГц, то оба ее процессора в совокупности не получат более 333 миллионов циклов CPU в секунду. Оставшиеся свободные циклы в эту секунду планировщик ESX будет просто ждать.

  • Параметр Reservation определяет сколько ресурсов процессора будет гарантировано виртуальной машине при работе.

  • Параметр Shares определяет приоритезацию потребления виртуальных машин между собой в пределах хоста ESX или пула ресурсов.

    Shares, в отличие от Limit и Reservation, имеет значение только тогда, когда ощущается нехватка ресурсов VMware ESX. Есть три стандартные настройки Shares - Low, Normal и High. Чем больше значение Shares, тем больше машина получит ресурсов в пределах пула или отдельного хоста ESX. Можно задать значение Custom и самостоятельно расставить соотношение приоритетов. Ресурсы будут раздаваться относительно этих значений. Параметр Shares начинает работать при нехватке ресурсов CPU.

Пример производительности

vmware_cpu_2.png

Выполнены два теста с параметром Limit = Unlimited и Limit = 333 MHz. Видно, что скорость выполнения теста при уменьшении тактовой частоты уменьшается пропорционально.

Linux - ограничение ресурсов виртуальных машин

CFS - Completely_Fair_Scheduler. Cgroup ЦПУ предоставляет два типа контроля ресурса ЦПУ:

  • Тип cpu_shares содержит некое целое значение, которое определяет относительную долю времени ЦПУ, доступного имеющимся в этой Сgroup задачам.

    Например, задачи в двух Сgroups, которые имеют cpu_shares=100 получат равное время ЦПУ, однако задачи в Сgroups, которые обладают cpu_shares=200 получат в два раза больше времени ЦПУ, чем те задачи, в Сgroup которых cpu.shares=100.

  • Тип vcpu_quota определяет общее значение времени в микросекундах, на протяжении которого все задачи в Сgroup способны работать за один период (определяется через vcpu_period).

    Как только все задачи в некой Сgroup используют всё заданное этой квотой время, они останавливаются на тот промежуток времени, который определяется значением периода и не допускается к исполнению в следующем периоде.

    vcpu_period - это период, из которого выделяются квоты ЦПУ для Сgroup (vcpu_quota), а значения параметров квоты и периода действуют на основе применения к каждому ЦПУ.

Примеры
  • Чтобы позволить соответствующей Сgroup быть способной выполнять доступ к отдельному ЦПУ на 0.2 секунды на протяжении каждой секунды, необходимо установить vcpu_quota=200000, а vcpu_period=1000000.

  • Чтобы позволить процессу задействовать отдельный ЦПУ на 100 %, необходимо установить vcpu_quota=1000000 и vcpu_period=1000000.

  • Чтобы допускать процессу использовать на 100 % два ЦПУ, необходимо установить vcpu_quota=2000000, в то время как vcpu_period=1000000.

Для контейнеров аналогично (docker resource_constraints).

Для виртуальных машин необходимо использовать команду

virsh + schedinfo domain [[--config] [--live] | [--current]] [[--set] parameter=value]...

  • --live устанавливает параметр в работающую ВМ.
  • --config повлияет на ВМ на следующем старте.

Для такого же теста. Если vcpu_quota в 10 раз меньше vcpu_period, то планировщик отдает в 10 раз меньше времени этой ВМ.

Дефолтные значения для планировщика

linux_cpu_3.png

linux_cpu_5.png

vcpu_quota=10000

linux_cpu_4.png

linux_cpu_6.png

xml-описание ВМ

linux_cpu_7.png

Пример изменения частоты и результаты

Частоту физического и виртуального процессора изменить на 1000 МГц.

Частота vCPU=1000

vcpu_1000_mhz.png

Результат теста с частотой vCPU=1000

vcpu_1000_mhz_perftest.png

Если изменить частоту виртуального процессора на 333 МГц, то тест покажет следующий результат.

Результат теста с частотой vCPU=333

vcpu_333_mhz_perftest.png

То есть планировщик отдает только ⅓ процессорного времени для этой ВМ относительно начальной частоты 1000 МГц.


Дополнительные функции vCPU

При нажатии кнопки Дополнительные функции vCPU в открывшемся окне необходимо указать дополнительные функции, после чего подтвердить операцию, нажав кнопку ОК.

Внимание

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