Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описываются режимы логики планирования виртуального процессора в Windows Server и Windows. Эти режимы или типы планировщика определяют, как гипервизор Hyper-V выделяет и управляет работой между гостевыми виртуальными процессорами. Администратор узла Hyper-V может:
- Выберите типы планировщика гипервизора, которые лучше всего подходят для гостевых виртуальных машин .
- Настройте виртуальные машины для использования логики планирования.
Background
Прежде чем рассматривать логику и элементы управления в Hyper-V планировании виртуальных процессоров, важно понимать такие понятия, как одновременная многопоточность (SMT) и как Hyper-V виртуализирует процессоры.
Understand SMT
SMT — это метод в современной архитектуре процессора, который предоставляет способ для отдельных независимых потоков выполнения для совместного использования ресурсов процессора. SMT обычно умеренно повышает производительность рабочих нагрузок. Он параллелизирует вычисления по возможности, увеличивая пропускную способность инструкций. Однако, когда потоки конкурируют друг с другом за общие ресурсы процессора, иногда нет заметного улучшения производительности. Может быть даже небольшое снижение производительности.
Чтобы использовать SMT с Windows Server, необходимо иметь совместимый процессор. Процессоры с технологией Intel Hyper-Threading (технология Intel HT) или Advanced Micro Devices (AMD) SMT являются примерами совместимых процессоров.
В целях этой статьи описания SMT и его использования Hyper-V применяются одинаково к системам Intel и AMD.
- Дополнительные сведения о технологии Intel Hyper-Threading см. в документации Intel.
- Дополнительные сведения об AMD SMT см. в статье AMD "Zen" Core Architecture.
Общие сведения о том, как Hyper-V виртуализирует процессоры
Перед тем как рассматривать типы планировщиков гипервизора, следует разобраться в архитектуре Hyper-V. Подробные сведения о том, как работает эта архитектура, см. вHyper-V обзоре технологий. Теперь имейте в виду следующие понятия:
Hyper-V создает секции виртуальных машин и управляет ими, распределяет вычислительные ресурсы и предоставляет общий доступ к ним под контролем гипервизора. Секции обеспечивают строгие границы изоляции между всеми гостевыми виртуальными машинами и между гостевыми виртуальными машинами и корневой секцией.
Корневая секция является секцией виртуальной машины, хотя она имеет уникальные свойства и больше привилегий, чем гостевые виртуальные машины. Корневой раздел
- Предоставляет службы управления, управляющие всеми гостевыми виртуальными машинами.
- Предоставляет поддержку виртуальных устройств для гостей.
- Управляет всеми входными и выходными данными устройства для гостевых виртуальных машин.
Рекомендуется не запускать рабочие нагрузки приложений в корневой секции.
Сопоставление "один к одному" существует между виртуальными процессорами корневой секции и базовыми логическими процессорами. Виртуальный процессор узла всегда выполняется на одном и том же логическом процессоре. Нет миграции виртуальных процессоров корневой секции.
По умолчанию логические процессоры, на которых размещаются виртуальные процессоры корневой секции, также могут запускать гостевые виртуальные процессоры.
Гипервизор может запланировать запуск гостевого виртуального процессора на любом доступном логическом процессоре. Планировщик гипервизора пытается учитывать временную локальность кэша, топологию неравномерного доступа к памяти (NUMA), а также многие другие факторы, когда планирует гостевой виртуальный процессор. Но в конечном счете виртуальный процессор можно запланировать на любом логическом процессоре узла.
Типы планировщика гипервизора
Гипервизор Hyper-V поддерживает несколько режимов логики планировщика, которые определяют, как гипервизор планирует виртуальные процессоры на базовых логических процессорах. Эти типы планировщика:
Классический планировщик
Классический планировщик — это планировщик по умолчанию, используемый во всех версиях Hyper-V раньше, чем Windows Server 2019. Классический планировщик предоставляет модель планирования с справедливым распределением, преемственным и циклическим подходом для гостевых виртуальных процессоров.
Классический тип планировщика подходит для большинства традиционных Hyper-V случаев использования, таких как частные облака, поставщики услуг хостинга и т. д. Характеристики производительности классического типа планировщика оптимизированы для поддержки широкого спектра сценариев виртуализации, таких как:
- Переподписывание виртуальных процессоров логическим процессорам.
- Одновременное выполнение множества разнородных виртуальных машин и рабочих нагрузок.
- Запуск высокопроизводительных крупномасштабных виртуальных машин.
- Поддержка полного набора функций Hyper-V без ограничений и других сценариев.
Основной планировщик
Планировщик ядра гипервизора является альтернативой классической логике планировщика. Основной планировщик доступен начиная с Windows Server 2016 и Windows 10 версии 1607. Основной планировщик предлагает надежную границу безопасности для изоляции гостевой рабочей нагрузки. Кроме того, это снижает производительность рабочих нагрузок в виртуальных машинах, работающих на узле виртуализации с поддержкой SMT. Основной планировщик поддерживает запуск виртуальных машин SMT и не-SMT на одном узле виртуализации с поддержкой SMT одновременно.
Основной планировщик:
- Использует топологию SMT узла виртуализации.
- При необходимости предоставляет пары SMT гостевым виртуальным машинам.
- Планирует группы гостевых виртуальных процессоров с одной виртуальной машины на группы логических процессоров SMT.
Эта работа выполняется симметрично. Если логические процессоры находятся группами по двое, виртуальные процессоры распределяются группами по два, и ядро никогда не разделяется между виртуальными машинами. При планировании виртуального процессора для виртуальной машины без поддержки SMT этот виртуальный процессор потребляет все ядро при запуске. При использовании основного планировщика:
- Она создает надежную границу безопасности для изоляции гостевой рабочей нагрузки. Гостевые виртуальные процессоры могут работать только на физических парах ядер, что снижает уязвимость к атакам через побочные каналы наблюдения.
- Это снижает вариативность пропускной способности.
- Это может снизить производительность. Если в группе может выполняться только один виртуальный процессор, запускается только один из потоков инструкций в ядрах. Другой остается бездействующим.
- Операционная система (ОС) и приложения, работающие на гостевой виртуальной машине, могут использовать интерфейсы SMT и интерфейсы программирования для управления и распределения работы между потоками SMT, как и с физическим компьютером.
По состоянию на Windows Server 2019 Hyper-V использует основной планировщик по умолчанию. В более ранних версиях, таких как Windows Server 2016, ядро планировщика является необязательным, и классический планировщик используется по умолчанию.
Поведение планировщика ядер при отключенной гиперпоточности узла
В некоторых случаях можно настроить гипервизор для использования основного типа планировщика, но возможность SMT отключена или отсутствует на узле виртуализации. В этих случаях Hyper-V использует классическое поведение планировщика независимо от параметра типа планировщика гипервизора.
Корневой планировщик
Корневой планировщик был представлен в Windows 10, версии 1803. При включении типа корневого планировщика гипервизор предоставляет корневому разделу контроль над расписанием работы. В корневом разделе ОС планировщик NT управляет всеми аспектами распределения работ системным логическим процессорам.
Корневой планировщик отвечает уникальным требованиям для поддержки служебного раздела и обеспечения строгой изоляции рабочей нагрузки, используемой с Защитником Windows Application Guard (WDAG). В этом сценарии, оставляя обязанности по планированию корневой ОС, можно воспользоваться несколькими преимуществами:
- Вы можете использовать элементы управления ресурсами ЦП, применимые к сценариям контейнеров с разделом служебной программы, упрощая управление и развертывание.
- Планировщик корневой ОС может легко собирать данные о загрузке ЦП внутри контейнера рабочей нагрузки. Он может использовать эти данные в качестве входных данных в политику планирования и применять его ко всем остальным рабочим нагрузкам в системе.
- Эти же метрики также помогают связывать выполненную работу в контейнере приложения с хост-системой. Отслеживание этих метрик сложнее с помощью традиционных рабочих нагрузок виртуальных машин, где некоторые рабочие нагрузки выполняются от имени всех работающих виртуальных машин в корневой секции.
Использование базового планировщика в клиентских системах
Начиная с Windows 10 версии 1803 корневой планировщик используется по умолчанию только в клиентских системах. Это означает:
- Вы можете включить гипервизор для поддержки безопасности на основе виртуализации и изоляции рабочей нагрузки WDAG.
- Важно правильно управлять будущими системами с гетерогенными архитектурами ядер.
Эта конфигурация является единственной поддерживаемой конфигурацией планировщика гипервизора для клиентских систем. Администраторы не должны пытаться переопределить тип планировщика гипервизора по умолчанию в клиентских системах Windows.
Элементы управления ресурсами ЦП виртуальной машины и корневой планировщик
Элементы управления ресурсами, которые использует гипервизор Hyper-V для отдельных процессоров виртуальных машин, не поддерживаются при включении корневого планировщика гипервизора. В корневой ОС логика планировщика управляет ресурсами узла на глобальной основе и не управляет гостевыми ресурсами отдельных виртуальных машин. Элементы управления ресурсами процессора виртуальных машин Hyper-V, такие как ограничения, весы и резервы, применяются только к тому, где гипервизор непосредственно управляет планированием виртуального процессора, например с классическими и основными типами планировщика.
Использование корневого планировщика на серверных системах
Мы не рекомендуем использовать корневой планировщик с Hyper-V на серверах. Его характеристики производительности еще не полностью охарактеризованы и настроены для размещения широкого спектра рабочих нагрузок, типичных для многих развертываний виртуализации сервера.
Включение SMT на гостевых виртуальных машинах
После настройки гипервизора узла виртуализации для использования основного типа планировщика можно также настроить гостевые виртуальные машины для использования SMT. В частности, можно указать количество виртуальных потоков SMT, которое будет предоставлено виртуальной машине гостя. Планировщик гостевой ОС и рабочие нагрузки виртуальных машин затем могут обнаруживать и использовать топологию SMT в собственном планировании работы.
- В Windows Server 2016 гостевой SMT не настроен по умолчанию. Администратор узла Hyper-V должен явно включить его.
- В Windows Server 2019 и более поздних версиях новые виртуальные машины, созданные на узле, наследуют топологию SMT узла по умолчанию. Например, виртуальная машина версии 9.0, созданная на узле с двумя потоками SMT на ядро, также содержит два потока SMT на ядро.
Чтобы включить SMT на гостевой виртуальной машине, необходимо использовать PowerShell. В диспетчере Hyper-V отсутствует пользовательский интерфейс. Чтобы включить SMT на гостевой виртуальной машине, выполните приведенные действия.
Откройте окно PowerShell с помощью учетной записи, являющейся членом Hyper-V администраторов или эквивалентной группы.
Запустите
Set-VMProcessor -VMName <VM-name> -HwThreadCountPerCore <n>
, где<n>
обозначает количество потоков SMT на одно ядро, доступных гостевой виртуальной машине. Если вы используете значение0
для<n>
, значениеHwThreadCountPerCore
задается как количество потоков SMT на узле по каждому ядру.Note
Windows Server 2016 не поддерживает настройку
HwThreadCountPerCore
на0
.
На следующем снимке экрана показана системная информация, полученная из гостевой ОС, работающей на виртуальной машине. Существует два виртуальных процессора, и SMT включен. Гостевая ОС обнаруживает два логических процессора, принадлежащих одному и тому же ядру.
Настройка типа планировщика гипервизора
Тип планировщика гипервизора, который Hyper-V используется по умолчанию, зависит от версии ОС. Независимо от того, какой планировщик по умолчанию используется в вашей ОС, можно настроить гипервизор для использования основного планировщика. Основной планировщик повышает безопасность путем ограничения гостевых виртуальных процессоров на выполнение соответствующих физических пар SMT. Эта конфигурация поддерживает использование виртуальных машин с планированием SMT для гостевых виртуальных процессоров.
Note
В Windows Server 2016 Hyper-V использует классический планировщик по умолчанию. Если вы используете Hyper-V в Windows Server 2016 или более поздней версии, рекомендуется выбрать основной планировщик. Это позволяет обеспечить оптимальную защиту узлов виртуализации от потенциально вредоносных гостевых виртуальных машин.
Рассмотрите влияние на безопасность и производительность
Чтобы обеспечить развертывание Hyper-V узлов в оптимальной конфигурации безопасности, Hyper-V использует базовую модель планировщика гипервизора по умолчанию, начиная с Windows Server 2019. Администратор узла может дополнительно настроить узел для использования устаревшего классического планировщика. Перед переопределением параметров по умолчанию администраторы должны тщательно читать, понимать и учитывать влияние каждого типа планировщика на безопасность и производительность узлов виртуализации. Дополнительные сведения см. в разделе "О выборе типа планировщика гипервизора Hyper-V".
Выберите тип планировщика гипервизора в Windows Server
Конфигурация планировщика гипервизора управляется записью в данных конфигурации загрузки (BCD).
Чтобы выбрать тип планировщика, выполните следующее:
Откройте командную строку с правами администратора.
Введите
bcdedit /set hypervisorschedulertype <type>
, где<type>
один из следующих параметров:Classic
Core
Root
Чтобы изменения, внесенные в тип планировщика гипервизора, вступили в силу, необходимо перезапустить систему.
Note
В настоящее время корневой планировщик гипервизора не поддерживается в Hyper-V на Windows Server. Администраторы Hyper-V не должны пытаться настроить корневой планировщик для использования с сценариями виртуализации сервера.
Определение текущего типа планировщика
Вы можете определить тип планировщика гипервизора, который Hyper-V в настоящее время используется, проверив системный журнал Windows. Найдите последнее событие запуска гипервизора с идентификатором 2. Это событие сообщает тип планировщика гипервизора, настроенный при запуске гипервизора. Для типа планировщика гипервизора возможны следующие значения:
Value | Scheduler type |
---|---|
1 | Классический планировщик, SMT отключен |
2 | Classic scheduler |
3 | Core scheduler |
4 | Root scheduler |
Средство просмотра событий или PowerShell можно использовать для просмотра журналов событий запуска гипервизора.
Использование PowerShell для запроса системных журналов для события запуска гипервизора
Чтобы запросить системные журналы для события гипервизора с идентификатором 2 с помощью PowerShell, выполните следующую команду:
Get-WinEvent -FilterHashTable @{ProviderName="Microsoft-Windows-Hyper-V-Hypervisor"; ID=2} -MaxEvents 1