Поделиться через


Управление типами планировщика гипервизора Hyper-V

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server версии 1803, Windows Server версии 1709, Windows 10

В этой статье описываются новые режимы логики планирования виртуальных процессоров, представленные в Windows Server 2016. Эти режимы или типы планировщика определяют, как гипервизор Hyper-V выделяет и управляет работой между гостевыми виртуальными процессорами. Администратор узла Hyper-V может:

  • Выберите типы планировщика гипервизора, которые лучше всего подходят для гостевых виртуальных машин .
  • Настройте виртуальные машины для использования логики планирования.

Необходимые компоненты

Чтобы использовать функции планировщика гипервизора , описанные далее в этой статье, необходимо установить следующие обновления. Эти обновления включают изменения для поддержки нового hypervisorschedulertype параметра BCD, который необходим для настройки узла.

Версия Выпуск Обязательное обновление Статья базы знаний
Windows Server 2016 1607 2018.07 C KB4338822
Windows Server 2016 1703 2018.07 C KB4338827
Windows Server 2016 1709 2018.07 C KB4338817
Windows Server 2019 1804 None None

Общие сведения

Прежде чем обсуждать логику и элементы управления в планировании виртуальных процессоров Hyper-V, важно понимать определенные понятия, такие как одновременная многопоточность и способ виртуализации процессоров Hyper-V.

Общие сведения о SMT

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

Чтобы использовать SMT с Windows Server, необходимо иметь совместимый процессор. Например, процессор с технологией Intel Hyper-Threading или Advanced Micro Devices (AMD) Multithreading (SMT).

В целях этой статьи описания SMT и его использования Hyper-V применяются одинаково к системам Intel и AMD.

  • Дополнительные сведения о технологии Intel HT см. в технология Hyper-Threading Intel.

  • Дополнительные сведения об AMD SMT см. в разделе "Базовая архитектура Zen".

Общие сведения о том, как Hyper-V виртуализирует процессоры

Прежде чем рассматривать типы планировщика гипервизора, необходимо понять архитектуру Hyper-V. Более подробное описание работы этой архитектуры можно найти в обзоре технологии Hyper-V, но на данный момент следует учитывать следующие понятия:

  • Hyper-V создает секции виртуальных машин и управляет ими, распределяет вычислительные ресурсы и предоставляет общий доступ к ним под контролем гипервизора. Секции обеспечивают строгие границы изоляции между всеми гостевыми виртуальными машинами и между гостевыми виртуальными машинами и корневой секцией.

  • Корневая секция является секцией виртуальной машины, хотя она имеет уникальные свойства и больше привилегий, чем гостевые виртуальные машины. Корневая секция:

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

    Рекомендуется не запускать рабочие нагрузки приложений в корневой секции.

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

  • По умолчанию виртуальные машины корневого раздела могут также запускать гостевые виртуальные машины.

  • Гипервизор может запланировать запуск гостевой виртуальной машины на любом доступном логическом процессоре. Хотя планировщик гипервизора пытается рассмотреть локализацию темпорального кэша, топологию доступа к памяти (NUMA) и многие другие факторы при планировании гостевой виртуальной машины, в конечном счете VP можно запланировать на любом узле LP.

Типы планировщика гипервизора

В Windows Server 2016 гипервизор Hyper-V поддерживает несколько режимов логики планировщика, которые определяют, как гипервизор планирует виртуальные процессоры на базовых логических процессорах. Эти типы планировщика:

Классический планировщик

Классический планировщик был по умолчанию для всех версий гипервизора Windows Hyper-V с момента его создания, включая Windows Server 2016 Hyper-V. Классический планировщик предоставляет справедливую долю, предварительную, циклическая модель планирования для гостевых виртуальных процессоров.

Классический тип планировщика является наиболее подходящим для большинства традиционных использования Hyper-V, таких как частные облака, поставщики услуг размещения и т. д. Характеристики производительности классического типа планировщика лучше всего оптимизированы для поддержки широкого спектра сценариев виртуализации, таких как:

  • Переподписывание виртуальных машин на LPs.
  • Одновременное выполнение множества разнородных виртуальных машин и рабочих нагрузок.
  • Выполнение больших масштабируемых высокопроизводительных виртуальных машин.
  • Поддержка полнофункциональный набор функций Hyper-V без ограничений и других сценариев.

Основной планировщик

Планировщик ядра гипервизора является альтернативой классической логике планировщика, представленной в Windows Server 2016 и Windows 10 версии 1607. Основной планировщик предлагает надежную границу безопасности для изоляции гостевой рабочей нагрузки. Кроме того, это снижает производительность рабочих нагрузок внутри виртуальных машин, работающих на узле виртуализации с поддержкой SMT. Основной планировщик поддерживает запуск виртуальных машин SMT и не SMT одновременно на одном узле виртуализации с поддержкой SMT.

Основной планировщик:

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

Эта работа выполняется симметрично. Если LPs находятся в группах двух, виртуальные машины планируются в группах из двух, а ядро никогда не совместно используется между виртуальными машинами. При планировании VP для виртуальной машины без поддержки SMT эта виртуальная машина использует все ядро при запуске. Общий результат основного планировщика заключается в том, что:

  • Она создает надежную границу безопасности для изоляции гостевой рабочей нагрузки. Гостевые виртуальные машины могут работать только на базовых физических парах ядер, что снижает уязвимость к атакам на стороне канала.
  • Это снижает вариативность пропускной способности.
  • Это может снизить производительность. Если только одна виртуальная машина в группе может выполняться, только один из потоков инструкций в ядрах запускается, а другой остается бездействия.
  • ОС и приложения, работающие на гостевой виртуальной машине, могут использовать интерфейсы SMT и программные интерфейсы (API) для управления и распределения работы между потоками SMT, как и с физическим компьютером.

По состоянию на Windows Server 2019 Hyper-V использует основной планировщик по умолчанию. В более ранних версиях, таких как Windows Server 2016, планировщик был необязательным, а классический планировщик — это параметр по умолчанию.

Поведение основного планировщика с отключенным SMT узла

В некоторых случаях можно настроить гипервизор для использования основного типа планировщика, но возможность SMT отключена или отсутствует на узле виртуализации. В этих случаях Hyper-V использует классическое поведение планировщика независимо от параметра типа планировщика гипервизора.

Корневой планировщик

Корневой планировщик прибыл с Windows 10 версии 1803. При включении типа корневого планировщика гипервизор предоставляет корневой элемент управления секцией планирования работы. Планировщик NT в экземпляре ОС корневого раздела управляет всеми аспектами планирования работы в системных LPs.

Корневой планировщик отвечает уникальным требованиям для поддержки секции служебной программы и обеспечения строгой изоляции рабочей нагрузки, используемой с Application Guard в Защитнике Windows (WDAG). В этом сценарии, оставляя обязанности по планированию корневой ОС, можно воспользоваться несколькими преимуществами:

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

Использование корневого планировщика в клиентских системах

Начиная с Windows 10 версии 1803 корневой планировщик используется по умолчанию только в клиентских системах. Это означает:

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

Эта конфигурация является единственной поддерживаемой конфигурацией планировщика гипервизора для клиентских систем. Администратор istrator не следует пытаться переопределить тип планировщика гипервизора по умолчанию в клиентских системах Windows.

Элементы управления ресурсами ЦП виртуальной машины и корневой планировщик

Предоставленные элементы управления ресурсами обработчика виртуальных машин Hyper-V не поддерживаются при включении корневого планировщика гипервизора. Логика планировщика корневой операционной системы управляет ресурсами узла на глобальной основе и не управляет гостевыми ресурсами одной виртуальной машины. Элементы управления ресурсами процессора Hyper-V для каждой виртуальной машины, такие как ограничения, весы и резервы, могут применяться только в том случае, когда гипервизор непосредственно управляет планированием VP, например с классическими и основными типами планировщика.

Использование корневого планировщика на серверных системах

Мы не рекомендуем использовать корневой планировщик с Hyper-V на серверах. Его характеристики производительности еще не были полностью охарактеризованы и настроены для размещения широкого спектра рабочих нагрузок, типичных для многих развертываний виртуализации сервера.

Включение SMT на гостевых виртуальных машинах

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

  • В Windows Server 2016 гостевой SMT не настроен по умолчанию. Администратор узла Hyper-V должен явно включить его.
  • Начиная с Windows Server 2019, новые виртуальные машины, созданные на узле, наследуют топологию SMT узла по умолчанию. Например, виртуальная машина версии 9.0, созданная на узле с двумя потоками SMT на ядро, также будет иметь два потока SMT на ядро.

Чтобы включить SMT на гостевой виртуальной машине, необходимо использовать PowerShell. В диспетчере Hyper-V отсутствует пользовательский интерфейс. Чтобы включить SMT на гостевой виртуальной машине, выполните приведенные действия.

  1. Откройте окно PowerShell с помощью учетной записи, являющейся членом группы Администратор istratorов Hyper-V или эквивалентной.
  2. Запустите Set-VMProcessor -VMName <VMName> -HwThreadCountPerCore <n>, где <n> отображается количество потоков SMT на ядро гостевой виртуальной машины. <n> = 0 задает значение, соответствующее HwThreadCountPerCore количеству потоков SMT узла для каждого основного значения.

Примечание.

В Windows Server 2019 и более поздних версий можно задать HwThreadCountPerCore = 0 вместо сопоставления счетчика потоков SMT узла.

На следующем снимке экрана показаны сведения о системе, полученные из гостевой операционной системы, работающей на виртуальной машине. Существует два виртуальных процессора и SMT. Гостевая операционная система обнаруживает два логических процессора, принадлежащих одному и тому же ядру.

Screenshot that shows msinfo32 in a guest VM with SMT enabled.

Настройка типа планировщика гипервизора в Windows Server 2016 Hyper-V

Windows Server 2016 Hyper-V использует классическую модель планировщика гипервизора по умолчанию. При необходимости можно настроить гипервизор для использования основного планировщика. Основной планировщик повышает безопасность путем ограничения гостевых виртуальных машин на выполнение соответствующих физических пар SMT. Эта конфигурация поддерживает использование виртуальных машин с планированием SMT для гостевых виртуальных машин.

Примечание.

Мы рекомендуем всем клиентам под управлением Windows Server 2016 Hyper-V выбрать основной планировщик, чтобы обеспечить оптимальную защиту узлов виртуализации от потенциально вредоносных гостевых виртуальных машин.

Windows Server 2019 Hyper-V по умолчанию использует основной планировщик

Чтобы обеспечить развертывание узлов Hyper-V в оптимальной конфигурации безопасности, Windows Server 2019 Hyper-V теперь использует базовую модель планировщика гипервизора по умолчанию. Администратор узла может дополнительно настроить узел для использования устаревшего классического планировщика. Перед переопределением параметров по умолчанию администраторы должны тщательно читать, понимать и учитывать влияние каждого типа планировщика на безопасность и производительность узлов виртуализации. Дополнительные сведения см. в разделе "О выборе типа планировщика гипервизора Hyper-V".

Выберите тип планировщика гипервизора в Windows Server

Конфигурация планировщика гипервизора управляется записью hypervisorschedulertype BCD.

Чтобы выбрать тип планировщика, выполните следующее:

  1. Откройте окно командной строки с правами администратора.
  2. Введите bcdedit /set hypervisorschedulertype type, где type один из следующих вариантов:
  • Classic
  • Core
  • Root

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

Примечание.

Корневой планировщик гипервизора на данный момент не поддерживается в Windows Server Hyper-V. Администраторы Hyper-V не должны пытаться настроить корневой планировщик для использования с сценариями виртуализации сервера.

Определение текущего типа планировщика

Вы можете определить, какой тип планировщика гипервизора в настоящее время используетСя с помощью Просмотр событий системного журнала. Вы можете увидеть последний идентификатор события запуска гипервизора 2, который сообщает тип планировщика гипервизора, настроенный при запуске гипервизора. События запуска гипервизора можно получить из Просмотр событий Windows или PowerShell.

Идентификатор события запуска гипервизора 2 обозначает тип планировщика гипервизора, где:

  • 1 = классический планировщик, отключено SMT
  • 2 = классический планировщик
  • 3 = основной планировщик
  • 4 = корневой планировщик

A screenshot of the hypervisor launch event ID 2 properties window. The user has selected the General tab, showing that the hypervisor scheduler type is 0x2.

A screenshot of the Event Viewer window. The user has selected Hyper-V Hypervisor launch event ID 2 from the list of events, highlighting it in dark blue.

Запрос события запуска планировщика гипервизора Hyper-V с помощью PowerShell

Чтобы запросить идентификатор события гипервизора 2 с помощью PowerShell, выполните следующие команды из командной строки PowerShell:

Get-WinEvent -FilterHashTable @{ProviderName="Microsoft-Windows-Hyper-V-Hypervisor"; ID=2} -MaxEvents 1

A screenshot of a query for hypervisor launch event ID 2. The results say hypervisor scheduler type is 0x2.