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

Процессоры

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

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

В разделе Процессоры доступен просмотр информации и изменение настроек кнопкой Изменение настроек процессоров.

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

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

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

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

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

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

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

  • Модель.

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

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

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

  • Частота.

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

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

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


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

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

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

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

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

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

При изменении параметра Максимальное количество потоков топология подстраивается под этот параметр, то есть включенная ВМ определяет именно Максимальное количество потоков, но при этом только на Общее количество потоков подключается питание, а (Максимальное количество потоков - Общее количество потоков)U определяется неактивными (без питания).


Изменение топологии 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 ВМ (от 2 до 10000 (макс. ВМ на кластер)).

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

По умолчанию Приоритет 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 vSphere / ESX устанавливаются следующим образом: vmware_cpu_0.png Этими тремя параметрами определяется потребление виртуальными машинами оперативной памяти и процессорных ресурсов хоста VMware ESX.

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

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

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

vmware_cpu_2.png

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

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

Completely_Fair_Scheduler

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

  • cpu_shares: Содержит некое целое значение, которое определяет относительную долю времени ЦПУ, доступного имеющимся в этой cgroup задачам. Например, задачи в двух cgroups, которые имеют установленными в 100 cpu_shares получат равное время ЦПУ, однако задачи в cgroups, которые обладают cpu_shares, установленным в 200 получат в два раза больше времени ЦПУ чем те задачи, в cgroup которых cpu.shares установлен равным 100.

  • vcpu_quota: Определяет общее значение времени в микросекундах, на протяжении которого все задачи в cgroup способны работать за один период (определяется через vcpu_period). Как только все задачи в некой cgroup использует всё заданное этой квотой время, они останавливаются на тот промежуток времени, который определяется значением периода и не допускается к исполнению в следующем периоде.

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

Например:

  • Чтобы позволить соответствующей cgroup быть способной выполнять доступ к отдельному ЦПУ на 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 повлияет на ВМ на следующем старте.

Для того же самого теста. Если quote в 10 раз меньше 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_mhz.png

Тест показывает результат:

vcpu_1000_mhz_perftest.png

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

vcpu_333_mhz_perftest.png

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


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

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