Настройка vCore для SQL Server на виртуальных машинах Azure

Область применения:SQL Server на виртуальной машине Azure

В этой статье показано, как оптимизировать производительность и сократить затраты на лицензирование SQL Server на виртуальных машинах Azure, используя настройку vCore виртуальной машины Azure, которая включает в себя настраиваемые ограниченные ядра (CCC) и возможность отключить настройки одновременной многопоточности (SMT).

Обзор

Настраиваемые ограниченные ядра (CCC) улучшают оригинальную модель ограниченного виртуального процессора в виртуальных машинах Azure. Он обеспечивает более точное управление количеством активных виртуальных ядер (также известных как виртуальные ЦП), чем родительская виртуальная машина. CCC предоставляет клиентам SQL Server возможность выделять виртуальные ядра независимо от памяти виртуальной машины и ввода-вывода. Эта конфигурация обеспечивает значительную экономию при лицензировании по количеству ядер, при этом сохраняя необходимый запас памяти и ввода-вывода для буферного пула, columnstore, пропускной способности резервного копирования/восстановления и пропускной способности хранилища.

При необходимости можно совместить отключение CCC с отключениемодновременных многопоточных операций (SMT) или гиперпоточности (задать число потоков на ядро = 1) для чувствительных к задержке рабочих нагрузок.

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

Исходная модель ограниченного виртуального ЦП

Исходная модель ограниченного виртуального ЦП — это функция виртуальных машин Azure, предназначенная для оптимизации экономии затрат для рабочих нагрузок, которые не требуют использования полной вычислительной емкости виртуальной машины. Ограниченные виртуальные ЦП позволяют выбирать размеры виртуальных машин с уменьшенным количеством виртуальных ЦП, сохраняя при этом те же объемы памяти, хранилища и сетевых ресурсов, что и исходный размер виртуальной машины. Эта функция особенно полезна для приложений, которые имеют больше памяти или операций ввода-вывода, а не привязаны к вычислительным ресурсам.

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

Ограниченные виртуальные ЦП встроены в выбор размера виртуальной машины, где имя виртуальной машины указывает на сокращение числа ядер. Например, размер E96-24ads_v5 виртуальной машины имеет 24 активных виртуальных ЦП вместо 96 виртуальных ЦП, доступных в родительском E96ads_v5 размере виртуальной машины. Он по-прежнему сохраняет 672 ГБ ОЗУ и производительность хранилища и сети родительской виртуальной машины. Дополнительные сведения см. в полном списке доступных размеров с ограниченными виртуальными ЦП.

Ограниченные виртуальные ЦП идеально подходят для:

  • Серверы баз данных, где производительность памяти и хранилища критически важна, но загрузка ЦП ниже.
  • Приложения с более высокими затратами на лицензирование на ядро.

С ограниченными виртуальными ЦП вы платите за меньшее количество виртуальных ядер, но вы по-прежнему оплачиваете затраты на вычисления и лицензирование Windows Server для родительской или хост-виртуальной машины.

Основные преимущества и функции исходной модели ограниченного виртуального ЦП

В следующем списке описываются некоторые основные преимущества и функции использования ограниченных виртуальных ЦП для SQL Server на виртуальных машинах Azure:

  • Преимущества соотношения цена-производительность. Вы можете выбрать размеры виртуальных машин с 50% или 75% от исходного количества виртуальных процессоров, что значительно снижает затраты на лицензирование SQL Server.
  • Память. Выделение памяти совпадает с конфигурацией родительской виртуальной машины, поэтому скомпрометированные рабочие нагрузки с большим объемом памяти не скомпрометируются.
  • Хранилище. Производительность хранилища совпадает с конфигурацией родительской виртуальной машины, поэтому рабочая нагрузка с интенсивным хранилищем не влияет.
  • Производительность. Снижение производительности виртуальных ЦП может повысить производительность, уменьшая количество конфликтов потоков и выравнивая использование ЦП с потребностями вашего приложения.

Замечание

SQL Server не поддерживает конфигурации с более чем 64 логическими процессорами на узел NUMA. Если вы пытаетесь установить SQL Server на сервере, превышающем это ограничение, начиная с SQL Server 2022 CU15, установка завершается сбоем, а журнал ошибок указывает на неподдерживаемую конфигурацию NUMA.

Недостатки исходной модели ограниченного виртуального ЦП

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

  • Несогласованная поддержка между семействами виртуальных машин. Не все семейства виртуальных машин Azure поддерживают ограниченные виртуальные ЦП.
  • Ограниченная гибкость. Исходная модель виртуального ЦП ограничивает только 25% или 50% виртуальных ядер родительской виртуальной машины без более детальной детализации. Это ограничение проблематично для рабочих нагрузок, требующих полных ресурсов родительской виртуальной машины, но только определенное, меньшее количество виртуальных ядер.
  • Проблемы масштабирования. По мере увеличения размера виртуальных машин отсутствие детализации становится более выраженным. Например, виртуальная Standard_M416ms_v2 машина предлагает 416 виртуальных ядер и даже ограниченный вариант (208 виртуальных ядер) может значительно превышать потребности многих развертываний SQL Server.

Улучшения, введенные с применением настраиваемых ограниченных ядер (CCC)

Модель настраиваемой виртуальной машины Azure с ограниченными ядрами (CCC) устраняет недостатки исходной модели ограниченного виртуального ЦП путем внедрения истинной гибкости и согласованности для развертываний виртуальных машин SQL Server, таких как следующие функции:

  • Тонкая настройка количества процессоров: CCC позволяет указать количество активных виртуальных процессоров (vCPU) для вашей виртуальной машины, вместо того чтобы ограничиваться предустановленными долями. Это означает, что вы можете выбрать любое поддерживаемое количество виртуальных ЦП, например 16, 32 или 48, при сохранении полной памяти, хранилища и пропускной способности ввода-вывода родительского размера виртуальной машины.
  • Согласованная доступность: CCC доступна в широком наборе семейств виртуальных машин, что снижает риск несогласованной поддержки. Вы можете уверенно выбрать наилучшую виртуальную машину, соответствующую вашим рабочим нагрузкам и лицензионным требованиям.
  • Оптимизированное лицензирование и использование ресурсов: выравнивая количество активных виртуальных ЦП с правами на лицензии SQL Server и требованиями к рабочей нагрузке, CCC помогает избежать оплаты неиспользуемых ядер, что гарантирует, что вы можете полностью использовать характеристики производительности больших размеров виртуальных машин.
  • Повышение удовлетворенности клиентов. Благодаря использованию CCC вы получаете гибкость для оптимизации затрат и производительности, что снижает вероятность непредвиденных расходов или неоптимальных конфигураций при повышении общей удовлетворенности развертываниями виртуальных машин SQL Server.

CCC позволяет клиентам SQL Server адаптировать свои развертывания виртуальных машин Azure, максимизировать эффективность лицензирования и использование ресурсов, минимизируя затраты и сложности.

Рекомендации по CCC для SQL Server на виртуальных машинах Azure

Настраиваемые ограниченные ядра (CCC) — это особенно полезная функция для SQL Server на виртуальных машинах Azure. Вы можете оптимизировать развертывание как для производительности, так и для затрат.

  • Выровняйте лицензирование SQL Server по ядрам с фактическим использованием процессора. Если нагрузка на SQL Server зависит от памяти или ввода-вывода, а не от использования процессора, выберите больший размер виртуальной машины для увеличения пропускной способности памяти и диска, но ограничьте количество активных виртуальных процессоров, чтобы соответствовать количеству лицензированных ядер. Этот выбор может снизить затраты на лицензирование SQL Server, сохраняя те же характеристики памяти виртуальных машин и операций ввода-вывода.
  • Повышение согласованности задержки: для некоторых шаблонов баз данных OLTP, чувствительных к задержкам, отключение SMT (установка потоков на ядро = 1) может снизить сопряжение логических ядер и концевую задержку для критически важных запросов или рабочих нагрузок синхронизации. Вы можете объединить SMT Off с CCC в одном развертывании.
  • Планирование развертывания. Перед развертыванием проанализируйте рабочую нагрузку SQL Server, чтобы определить оптимальное количество виртуальных ЦП. Параметры CCC и SMT можно изменять только во время первоначального создания виртуальной машины или во время операции изменения размера. Эти параметры нельзя изменить на работающей виртуальной машине, а изменение размера требует перезагрузки.
  • Необходимо выделить виртуальные ЦП. При указании значений количество активных виртуальных ЦП (vCPUsAvailable) не должно превышать количество виртуальных ЦП по умолчанию для выбранного размера виртуальной машины. Для размеров виртуальных машин, использующих гиперпоточность (два потока на ядро), допустимые значения для vCPUsAvailable — четные числа (например, 2, 4, 6 и т. д.), в то время как размеры без гиперпоточности допускают увеличение на единицу. Параметры CCC и SMT сохраняются, если изменить размер виртуальной машины на другой совместимый размер. Если размер целевой виртуальной машины не поддерживает эти функции, операция изменения размера блокируется. Если вы активируете преимущество гибридного использования Azure или используете лицензирование по числу ядер, установите vCPUsAvailable на значение лицензированное число ядер, которое вы планируете использовать. SQL Server видит только это число логических процессоров. Этот выбор позволяет выбрать большую память или виртуальную машину ввода-вывода (для буферного пула или пропускной способности) без оплаты ненужных ядер SQL. Проверьте количество ядер в Windows с помощью диспетчера задач и sys.dm_os_sys_info в SQL Server.
  • Отключить SMT: некоторые рабочие нагрузки OLTP получают выгоду от отключения SMT из-за уменьшения конкуренции за общие вычислительные ресурсы. Другие рабочие нагрузки, такие как аналитика или высокопараллельные задачи, получают преимущества от включения SMT. Протестируйте обе рабочие нагрузки с помощью репрезентативных нагрузочных тестов перед завершением.
  • NUMA и MAXDOP: CCC изменяет только количество логических ЦП, а не базовую пропускную способность виртуальной машины или пропускную способность ввода-вывода. Просмотрите пороговое значение MAXDOP и затрат для параллелизма после ограничения ядер, чтобы обеспечить оптимальную параллелизму на сокращенных ЦП. Применение общих рекомендаций по повышению производительности путем настройки для каждой рабочей нагрузки SQL Server.
  • Группы доступности и резервные копии: Ограничение количества ядер не изменяет доступную пропускную способность диска для данного размера виртуальной машины. Вы можете продолжать использовать пропускную способность хранилища большей виртуальной машины для резервного копирования, восстановления и синхронизации группы доступности. Эта пропускная способность является общим драйвером для выбора больших размеров памяти или операций ввода-вывода с меньшим количеством активных ядер.
  • Нет дополнительной платы: нет дополнительных затрат на виртуальную машину Azure для использования CCC или элементов управления SMT /HT, так как цены на вычисления виртуальных машин остаются одинаковыми, что и выбранный размер, включая затраты на вычисления, память и хранилище. Потенциальная экономия приходится на базовое лицензированное программное обеспечение (например, SQL Server) с учетом уменьшения количества виртуальных ЦП. Просмотрите условия лицензирования, чтобы оценить экономию и общие затраты.

Примеры шаблонов развертывания SQL Server

Рассмотрим следующие примеры шаблонов развертывания рабочей нагрузки SQL Server:

  • OlTP с интенсивным объемом памяти: выберите виртуальную машину серии E или Ebdsv5 для высокой памяти. Установите vCPUsAvailable для соответствия лицензии SQL Server (например, восемь ядер) и при необходимости установите vCPUsPerCore = 1 для отключения SMT для рабочих нагрузок с учетом задержки. Эта конфигурация сохраняет память виртуальной машины и операций ввода-вывода при снижении затрат на лицензирование.
  • Интенсивное использование памяти и хранилища в OLAP/DW: выберите виртуальную машину серии M для высоких требований к объему памяти и хранилища. Установите vCPUsAvailable в соответствии с вашей лицензией SQL Server (например, 32 ядра), а при необходимости установите vCPUsPerCore = 1 для отключения SMT, чтобы минимизировать задержку при обработке чувствительных к задержке рабочих нагрузок.
  • Пропускная способность резервного копирования и восстановления. Выберите оптимизированную для хранения виртуальную машину для максимальной пропускной способности для больших двоичных объектов или управляемых дисков. Задайте vCPUsAvailable количество необходимых ядер SQL, сохраняя высокую пропускную способность диска при лицензировании меньше ядер.

Начало работы с CCC

Параметры CCC и SMT для виртуальной машины Azure можно задать с помощью портала Azure, Azure CLI, PowerShell и шаблонов ARM. Дополнительные сведения см. в статье о настройке виртуальных ядер виртуальной машины.

После развертывания или изменения размера виртуальной машины Azure проверьте конфигурацию ЦП в гостевой операционной системе и в SQL Server, чтобы убедиться, что параметры применяются правильно.

Проверка конфигурации ЦП в Windows

Используйте диспетчер задач (производительность → ЦП) для проверки количества логических процессоров.

Выполните wmic cpu get NumberOfCores,NumberOfLogicalProcessors в командной строке администратора, чтобы подтвердить состояние SMT.

Проверка конфигурации ЦП в SQL Server

Выполните SELECT cpu_count, hyperthread_ratio FROM sys.dm_os_sys_info;, чтобы проверить логическое количество ЦП и SMT.

Просмотрите и настройте максимальный уровень параллелизма (MAXDOP) и порог затрат для параллелизма для нового количества ЦП.

Ограничения

Рассмотрите следующие ограничения использования настройки виртуальных ядер виртуальной машины для SQL Server на виртуальных машинах Azure.

  • Поддерживаемые образы включают сторонние образы, такие как Windows Server, Ubuntu, RHEL, SUSE и пользовательские образы. Сторонние изображения в Marketplace не поддерживаются. Устаревшие образы виртуальных машин SQL Marketplace для Linux не поддерживаются.
  • В настоящее время CCC доступен в выбранных регионах, таких как западная часть США, Северная Европа, Восточная Азия и Южная Великобритания.
  • Можно задать CCC/SMT только в процессе создания или изменения размера. Изменения динамической среды выполнения не поддерживаются. Изменение размера вызывает перезагрузку.

Часто задаваемые вопросы (FAQ)

Рассмотрим следующие часто задаваемые вопросы:

Изменяет ли CCC пропускную способность памяти или хранилища моей виртуальной машины?

Нет. CCC изменяет только количество виртуальных ЦП, представленных гостевой ОС. Объем памяти и ввода-вывода выбранного размера виртуальной машины сохраняется.

Можно ли включить или отключить CCC без простоя?

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

Распознает ли SQL Server сокращенное число ядер для лицензирования?

Да. SQL Server и другое vCPUsAvailable лицензированное программное обеспечение для каждого ядра видят только значение, которое получает ОС. Проверьте условия лицензирования, чтобы подтвердить.