Функция настройки виртуальных ядер: отключение одновременной многопоточности (SMT/HT) и ограниченных и настраиваемых ядер.

Настройка виртуальных ядер виртуальной машины — это новая функция виртуальной машины Azure, которая обеспечивает более широкий контроль над ресурсами ЦП виртуальной машины. Он состоит из двух связанных возможностей:

Отключить одновременную многопоточность (потоки на ядро = 1): позволяет запускать виртуальную машину только с одним потоком на физическое ядро ЦП, эффективно отключая одновременную многопоточность (SMT). Отключение дает виртуальной машине возможность полного использования каждого физического ядра, что может повысить производительность некоторых рабочих нагрузок (например, чувствительных к задержкам приложений), которые получают преимущества от эксклюзивного доступа к ядрам.

Настраиваемые ограниченные ядра (настройка виртуальных ЦП): Позволяют выбрать произвольное количество виртуальных ЦП для новой виртуальной машины, меньшее, чем количество виртуальных ЦП по умолчанию для этого размера виртуальной машины. Он позволяет выделять только необходимые ядра ЦП, например, чтобы сократить затраты на лицензирование программного обеспечения, лицензированного на ядро (например, базы данных или серверы аналитики), а также получать полную память и ввод-вывод большей виртуальной машины.

Преимущества. С помощью этих функций можно оптимизировать виртуальные машины как для производительности, так и для затрат:

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

Оптимизация затрат: Сокращение количества виртуальных ЦП виртуальной машины может снизить затраты на программное обеспечение, которое взимается за ЦП. Вы можете запустить sql Server с большим объемом памяти на виртуальной машине с меньшим количеством виртуальных ЦП, сокращая плату за лицензирование SQL, не оплачивая неиспользуемую емкость ЦП.

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

Настройка параметров виртуальной машины

Вы можете настроить параметры "Потоки на ядро" и "доступные виртуальные ЦП" с помощью портала Azure, шаблонов Azure Resource Manager (ARM) или средств командной строки.

Портал Azure

На портале Azure рабочий процесс создания виртуальной машины имеет пользовательский интерфейс для этих параметров.

Начните создавать виртуальную машину как обычно (например, щелкните "Создать виртуальную машину ресурса>" и заполните вкладку "Основные сведения").

  1. В разделе "Размер" на вкладке "Основные сведения" выберите размер виртуальной машины, который требуется использовать. В разделе выбора размера нажмите кнопку "Настройка ядер". Откроется больше полей для настройки виртуальной машины.

  2. Чтобы отключить SMT, установите количество потоков на ядро в 1. (Оставьте значение на 2, если вы хотите сохранить гиперпоточность включенной.)

  3. Для количества виртуальных ЦП задайте виртуальные ЦП, доступные для требуемого количества виртуальных ЦП. Портал предоставляет допустимые значения для выбранного размера виртуальной машины.

  4. Перейдите к остальной части создания виртуальной машины (настройте диски, сети и т. д.) и создайте виртуальную машину.

После развертывания виртуальной машины он имеет указанное количество виртуальных ЦП. Если установить число потоков на одно ядро равным 1, операционная система виртуальной машины будет видеть половину обычного количества процессоров (так как гиперпоточность отключена). Если вы сократили количество виртуальных ЦП, было бы видно меньшее количество.

Azure CLI (Интерфейс командной строки для Azure)

Чтобы отключить SMT и настроить ядра во время запуска экземпляра:

Чтобы отключить SMT/HT, используйте команду Azure CLI и укажите значение 1 для VCPUsPerCore для параметра --cpu-options. Чтобы настроить ядра, нужно указать количество ядер процессора для виртуальных процессоров. В этом примере для указания количества ядер ЦП по умолчанию для экземпляра Standard_D8s_v6 укажите значение 8.

Az vm create --resource-group ccctest-rg-01 --name ccctestvm01 --image Ubuntu2204 --size Standard_D8s_v6 --location eastus2euap --admin-username azureuser --generate-ssh-keys --public-ip-address '""' --v-cpus-available 4 --v-cpus-per-core 1

PowerShell

Отключение SMT и настройка ядер при запуске экземпляра

Используйте PowerShell и укажите свойства базового объекта конфигурации. Чтобы отключить SMT/HT, укажите значение 1 для VCPUsPerCore для параметра --cpu-options. Чтобы настроить ядра, нужно указать количество ядер процессора для виртуальных процессоров.

$vmConfig = New-AzVMConfig -VMName "MyVM" -VMSize "Standard_D8s_v6"

$vmConfig.HardwareProfile.VmSizeProperties = New-Object Microsoft.Azure.Management.Compute.Models.VMSizeProperties

$vmConfig.HardwareProfile.VmSizeProperties.VCPUsAvailable = 4

$vmConfig.HardwareProfile.VmSizeProperties.VCPUsPerCore = 1

Затем перейдите к настройке ОС, сети и т. д., а затем используйте New-AzVM для создания виртуальной машины. Этот подход использует объекты пакета SDK Azure PowerShell непосредственно для внедрения значений.

Шаблон ARM (Azure Resource Manager)

Для автоматизации или сценариев, где требуется развертывание с помощью инфраструктуры как кода, можно использовать шаблоны Azure Resource Manager для указания этих опций процессора. Это можно использовать для отключения SMT и развертывания настраиваемых виртуальных машин с помощью интерфейса командной строки или PowerShell (путем развертывания шаблона).

В определении ресурсов шаблона ARM для виртуальной машины параметры ЦП указываются в свойстве hardwareProfile виртуальной машины. В частности, для задания значений используется vmSizeProperties внутри hardwareProfile:

vCPUsPerCore — задайте для этого значение 1, чтобы отключить гиперпоточность (например, 1 поток на ядро). Опустить это свойство или задать значение NULL/2, чтобы использовать гиперпоточность по умолчанию (2 потока на ядро).

vCPUsAvailable — задайте для этого количество виртуальных ЦП, которые требуется активировать. Если это свойство не задано, виртуальная машина использует число виртуальных ЦП по умолчанию для этого размера.

Ниже приведены краткие примеры фрагментов шаблона ARM для различных сценариев:

Отключите SMT (SMT/HT Off)

В этом фрагменте показано, как отключить SMT на виртуальной машине (виртуальная машина использует 1 поток на ядро)

"properties": {

"hardwareProfile": {

"vmSize": " Standard_D8s_v6",

"vmSizeProperties": {

"vCPUsPerCore": 1

}

},

...

}

В этом случае, если Standard_D8s_v6 обычно имеет 8 виртуальных ЦП (4 ядра * 2 потока), параметр vCPUsPerCore: 1 означает, что виртуальная машина имеет 4 виртуальных ЦП (один на ядро).

Ограничение количества виртуальных ЦП (настройка ядер)

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

"properties": {

"hardwareProfile": {

"vmSize": " Standard_D8s_v6",

"vmSizeProperties": {

"vCPUsAvailable": 2

}

},

...

}

Здесь мы попросили два ядра. В Standard_D8s_v6 (который по умолчанию гиперпоточен), выделено 2 физических ядра, и так как SMT по-прежнему включен по умолчанию (2 потока на ядро), виртуальная машина имеет 4 логических виртуальных ЦП.

Отключение SMT и настройка виртуальных ЦП

Вы можете объединить оба параметра, как показано ниже.

"properties": {

"hardwareProfile": {

"vmSize": " Standard_D8s_v6",

"vmSizeProperties": {

"vCPUsPerCore": 1,

"vCPUsAvailable": 2

}

},

...

}

В этом примере vCPUsPerCore: 1 отключает SMT и vCPUsAvailable: 2 затем запрашивает 2 виртуальных ЦП. При отключении SMT эти 2 соответствуют одному из двух физических ядер (без многопоточности). У виртуальной машины есть два логических процессора в ОС.

Обязательно используйте версию API 2021-07-01 или более позднюю для ресурса Microsoft.Compute/virtualMachines в вашем шаблоне, так как именно с этой версии были введены эти свойства.

Определение поддерживаемых виртуальных ядер для конфигурации

Чтобы определить, какие виртуальные ЦП можно ограничить в определенном регионе, можно использовать Azure CLI или портал Azure.

Использование Azure CLI

Выполните следующую команду, чтобы получить список номеров SKU вычислений для вашей подписки и региона:

az vm list-skus --location {location} --resource-type virtualMachines --query "[name=='VM_NAME_HERE']" 
  • Эта команда показывает поддерживаемые конфигурации виртуального ЦП. Поле "vCPUsConstraintsAllowed" описывает поддерживаемые виртуальные ядра.

Использование портала Azure

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

Соображения

Большинство семейств виртуальных машин Azure поддерживают эти функции, но при использовании этой функции существуют некоторые важные правила и рекомендации.

  • Вы можете отключить гиперпоточность только в размерах виртуальных машин, использующих гиперпоточность по умолчанию (например, виртуальные машины с 2 потоками на ядро).

  • Вы можете уменьшить только количество виртуальных ЦП, а не увеличить его за рамки по умолчанию виртуальной машины. Указанное значение vCPUsAvailable должно быть меньше или равно количеству виртуальных ЦП по умолчанию выбранного размера виртуальной машины.

  • В размерах виртуальных машин с гиперпоточностью (по умолчанию 2 потока на ядро), любое количество виртуальных процессоров должно быть четным числом.

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

  • Параметры ЦП можно указать только во время создания виртуальной машины или во время операции изменения размера. Вы не можете динамически настроить количество ядер или параметр SMT на выделенной виртуальной машине, это обновление требует, чтобы виртуальная машина была освобождена.

  • При переходе на новый размер виртуальной машины в той же семье, которая также поддерживает эту функцию, параметры переносятся по умолчанию.

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

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

  • В общедоступной версии поддерживается единообразная форма VMSS. В настоящее время поддерживаются только сторонние образы Azure Marketplace (например, Windows Server, Ubuntu, Red Hat и SUSE) и пользовательские образы. Специализированные предложения Marketplace, включая SQL Server на виртуальных машинах, в настоящее время не поддерживаются.

  • Поддержка портала пока недоступна и скоро ожидается.