Какое максимальное количество виртуальных адаптеров поддерживается в Windows 2016 server hyper v

Обновлено: 03.07.2024

Это сообщение было отредактировано/обновлено 19 февраля 2021 г.

Рекомендации Microsoft заключаются в том, что VMQ должен быть отключен на сетевых адаптерах 1 Гбит/с. Существует известная проблема с реализацией Broadcom 1Gb VMQ, которая предположительно исправлена ​​в последних драйверах. Убедитесь, что все ваши драйверы обновлены.

Назад к основам: что такое очередь виртуальных машин (VMQ), зачем она нужна и почему ее следует включить?

Очередь виртуальной машины или динамический VMQ — это механизм сопоставления физических очередей в физическом сетевом адаптере с виртуальным сетевым адаптером (vNIC) или сетевым адаптером виртуальной машины (vmNIC) в родительском разделе или гостевой ОС. Это сопоставление делает обработку сетевого трафика более эффективной. Повышенная эффективность приводит к меньшему времени процессора в родительском разделе и сокращению задержки сетевого трафика.

VMQ распределяет трафик по vmNIC/vNIC, и каждый VMQ может использовать не более одного логического ЦП на узле, другими словами, VMQ равномерно распределяет трафик между несколькими гостевыми (ВМ) на одном узле с vSwitch (1 ядро для vmNIC/vNIC).

Примечание. vNIC означает виртуальную сетевую карту раздела хоста виртуального коммутатора в ОС управления, а vmNIC — искусственную сетевую карту внутри виртуальной машины.

VMQ автоматически включается по умолчанию на компьютерах с Windows Server, когда vSwitch создается с сетевыми адаптерами 10Gig и выше, и это полезно при размещении множества виртуальных машин на одном физическом хосте.

На рисунке ниже показан входящий трафик с включенным VMQ для виртуальных машин.

[Входящий поток трафика VMQ для виртуальных машин — источник Microsoft]

При использовании сетевых адаптеров 1Gig VMQ отключен по умолчанию, поскольку Microsoft не видит никакого преимущества в производительности от VMQ на сетевых адаптерах 1Gig, а один ЦП/ядро без проблем справляется с сетевым трафиком 1Gig.

Как я упоминал выше, при отключенном VMQ весь сетевой трафик для vmNIC должен обрабатываться одним ядром/ЦП, однако при включенном и настроенном VMQ сетевой трафик автоматически распределяется между несколькими ЦП.

Что произойдет, если у вас есть большое количество виртуальных машин веб-серверов на узле с 2 или более восьмиядерными процессорами и большим объемом памяти, но вы ограничены физическими сетевыми адаптерами только с 1 гигабайтом?

В этой статье

VMQ и vRSS лучше вместе

Как я уже демонстрировал в предыдущих сообщениях блога, Post I и Post II , в Windows Server 2012 R2 появилась новая функция под названием Virtual Receive Side Scaling (vRSS). Эта функция работает с VMQ для распределения рабочей нагрузки ЦП по приему сетевого трафика между несколькими (виртуальными ЦП) внутри виртуальной машины. Это эффективно устраняет узкое место ядра ЦП, с которым мы столкнулись при использовании одной виртуальной сетевой карты. Чтобы в полной мере воспользоваться этой функцией, и хост, и гость должны работать под управлением Windows Server 2012 R2. В результате VMQ необходимо включить на физическом хосте, а RSS включить внутри виртуальной машины, но до этого момента Microsoft фактически не включает vRSS для vNIC хоста, это только для виртуальных машин, поэтому мы застряли с одним процессором. в разделе управления хостом с конвергентной сетевой средой. Хорошо, что виртуальные сетевые адаптеры на стороне хоста привязаны к одному процессору, но они по-прежнему будут получать виртуальные очереди, если у вас достаточно очередей и они распределены по разным процессорам.

Требования для включения VMQ следующие:

Что такое базовый ЦП? Это первый ЦП, используемый для обработки входящего трафика для конкретного vmNIC.

Какова максимальная загрузка ЦП? Это максимальное количество ЦП, на котором мы разрешаем этому сетевому адаптеру обрабатывать трафик.

Хорошо, после объяснения давайте настроим VMQ шаг за шагом:

Наш сценарий:

Во-первых, нам нужно определить, включена ли технология HyperThreading, запустив следующий командлет:

Как видите, количество логических процессоров в два раза превышает количество ядер, поэтому мы знаем, что HT включен в системе.

Далее нам нужно взглянуть на наш режим объединения сетевых карт и распределения нагрузки:

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

Внимание: перед тем, как перейти к заданию, необходимо учесть один важный момент: если группа сетевых адаптеров находится в режиме объединения, независимом от коммутатора, а для параметра «Распределение нагрузки» задан режим порта Hyper-V или динамический режим, то сообщается количество очередей. представляет собой сумму всех очередей, доступных от участников группы (режим SUM-Queues), в противном случае сообщаемое количество очередей представляет собой наименьшее количество очередей, поддерживаемых любым участником группы (режим MIN-Queues).

Что такое (режим SUM-Queues) и что такое (режим MIN-Queues)?

Режим SUM-Queues — это общее количество VMQ всех физических сетевых адаптеров, участвующих в команде, однако режим MIN-Queues — это минимальное количество VMQ всех физических сетевых адаптеров, участвующих в команде. .

В качестве примера предположим, что у нас есть две физические сетевые карты с 4 виртуальными машинными станциями в каждой. Если режим объединения является независимым от коммутатора с портом Hyper-V, режимом будут SUM-очереди, равные 8 VMQ, однако, если режим объединения зависит от коммутатора с портом Hyper-V, режим будет MIN-Queues, равным 4 VMQ.

[Вы можете обратиться к таблице ниже, чтобы определить режим объединения и распределения нагрузки, источник — Microsoft]:

В моем сценарии группа сетевых адаптеров находится в независимом от коммутатора динамическом режиме, поэтому мы находимся в режиме SUM-Queues.

Если команда находится в режиме Sum-Queues, процессоры членов команды должны быть непересекающимися или с минимальным перекрытием, насколько это возможно. Например, на 4-ядерном хосте (8 логических процессоров) с группой сетевых адаптеров 2X10 Гбит/с вы можете настроить первый сетевой адаптер на использование базового процессора из 2 и на использование 4 ядер; второй будет настроен на использование базового процессора 6 и двух ядер.

Если команда находится в режиме Min-Queues, наборы процессоров, используемые членами команды, должны быть идентичными, вы должны настроить каждого члена команды NIC на использование одних и тех же ядер, другими словами, назначение для каждой физической NIC будет то же самое.

Теперь давайте сначала проверим, включен ли VMQ:

Как видите, VMQ включен (=True), но еще не настроен.

Здесь у нас есть две команды конвергентной сети с 4 физическими сетевыми адаптерами и 16 очередями в каждой, поэтому общее количество виртуальных машин в каждой команде составляет 64.

Я использую одну Converged Team для vmNIC (виртуальные машины), а вторая — для vNIC на хосте.

Мы установим базовую и максимальную загрузку ЦП, выполнив следующие командлеты для объединенных адаптеров в ConvergedNetTeam01:

Как я упоминал выше, в режиме Sum-Queues вы должны настроить базовый и максимальный ЦП для каждой физической сетевой карты, по возможности не перекрывая друг друга, но в нашей тестовой среде у нас было не так много ядер, как у нас. были очереди, поэтому у нас должно было быть некоторое перекрытие, иначе мы тратим наши очереди впустую.

Давайте снова запустим Get-NetAdapterVmq и посмотрим на изменения:

Как вы можете видеть, базовый и максимальный процессоры теперь настроены, теперь мы можем запустить Get-NetAdapterVmqQueue и это покажет нам, как все очереди назначаются через VMQ в vmNIC для всех виртуальных машин на этом конкретном хосте.

Теперь давайте посмотрим на результат до и после включения VMQ + vRSS:

VMQ и vRSS отключены

В гостевой ОС:

VMQ и vRSS включены

В гостевой ОС:

Рекомендации по настройке VMQ

  1. При использовании объединения сетевых карт всегда используйте Switch Independent с динамическим режимом, когда это возможно.
  2. Убедитесь, что ваш базовый процессор никогда не установлен на ноль, чтобы обеспечить наилучшую производительность, поскольку CPU0 обрабатывает специальные функции, которые не могут выполняться никаким другим процессором в системе.
  3. Имейте в виду, что при назначении базового/максимального ЦП и включенной технологии HyperThreading в системе реальным процессором является только четный номер процессора (2,4,6,8 и т. д.), если HT не включен. вы можете использовать четные и нечетные числа (1, 2, 3, 4, 5 и т. д.).
  4. В режиме SUM-Queues попробуйте настроить базовый и максимальный ЦП для каждой физической сетевой карты с минимальным перекрытием, насколько это возможно, это зависит от аппаратной конфигурации хоста с несколькими ядрами.
  5. Назначайте только значения максимального процессора 1,2,4,8. Допустимо иметь максимальное количество процессоров, которое выходит за пределы последнего ядра или превышает количество виртуальных машинных Q на физическом сетевом адаптере.
  6. Не устанавливайте процессоры Base и Max на сетевых адаптерах Multiplexor NIC Teamed, оставьте их по умолчанию.

В заключение я бы предпочел включить VMQ на 1-гигабитных сетевых адаптерах, чтобы мой сетевой трафик распределялся между как можно большим числом ЦП/ядер.

Подробное изучение VMQ и RSS можно найти в третьей части серии TechNet "Подробное изучение VMQ" .

Драйвер Mellanox WinOF-2 включает интерфейс очереди виртуальных машин (VMQ) для поддержки повышения производительности сети Microsoft Hyper-V и повышения безопасности.

Интерфейс VMQ поддерживает:

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


To включить Hyper-V с VMQ с помощью пользовательского интерфейса:

  1. Откройте Диспетчер Hyper-V.
  2. Щелкните правой кнопкой мыши нужную виртуальную машину (ВМ) и щелкните левой кнопкой мыши Настройки во всплывающем меню.
  3. В окне "Настройки" под соответствующим сетевым адаптером выберите "Аппаратное ускорение".
  4. Установите или снимите флажок "Включить очередь виртуальных машин", чтобы включить или отключить VMQ на этом конкретном сетевом адаптере.


Чтобы включить Hyper-V с VMQ с помощью PowerShell:

  1. Включите VMQ на определенной ВМ: Set-VMNetworkAdapter -VmqWeight 100
  2. Отключить VMQ на определенной ВМ: Set-VMNetworkAdapter -VmqWeight 0

Виртуализация сети с использованием универсальной инкапсуляции маршрутизации (NVGRE)

Виртуализация сети с разгрузкой универсальной инкапсуляции маршрутизации (NVGRE) в настоящее время поддерживается в Windows Server 2012 R2 с последними обновлениями для Microsoft.

Включение/отключение разгрузки NVGRE

Чтобы использовать NVGRE для виртуализации тяжелых сетевых рабочих нагрузок ввода-вывода, сетевой сетевой адаптер Mellanox ConnectX®-4 по умолчанию обеспечивает аппаратную поддержку разгрузки GRE в сетевых сетевых адаптерах.


Чтобы включить/отключить разгрузку NVGRE:

  1. Откройте диспетчер устройств.
  2. Перейдите к сетевым адаптерам.
  3. Щелкните правой кнопкой мыши «Свойства» на плате Ethernet-адаптера Mellanox ConnectX®-4.
  4. Перейдите на вкладку "Дополнительно".
  5. Выберите параметр «Инкапсулировать разгрузку задач».
  6. Задайте одно из следующих значений:
    1. Включить — разгрузка GRE включена по умолчанию
    2. Отключено. При отключении хост Hyper-V по-прежнему сможет передавать трафик NVGRE, но контрольные суммы TCP и внутреннего IP будут вычисляться программным обеспечением, что значительно снижает производительность.

    Настройка NVGRE с помощью PowerShell

    Политики виртуализации сети Hyper-V можно настроить централизованно с помощью PowerShell 3.0 и PowerShell Remoting.

    Дополнительную информацию о настройке NVGRE с помощью PowerShell можно найти в блоге Microsoft «Step-by-Step: Hyper-V Network Virtualization».

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

    • Внешний заголовок ETH
    • Внешний IP-адрес
    • Заголовок GRE
    • Внутренний заголовок ETH
    • Исходная полезная нагрузка Ethernet

    Виртуализация ввода-вывода с одним корнем (SR-IOV)

    Виртуализация ввода-вывода с одним корнем (SR-IOV) – это технология, которая позволяет физическому устройству PCIe многократно представлять себя через шину PCIe. Эта технология позволяет использовать несколько виртуальных экземпляров устройства с отдельными ресурсами. Адаптеры Mellanox могут предоставлять до 127 виртуальных экземпляров, называемых виртуальными функциями (VF), на порт. Затем эти виртуальные функции могут быть предоставлены отдельно. Каждый VF можно рассматривать как дополнительное устройство, связанное с физической функцией. Он также использует общие ресурсы с физической функцией.

    SR-IOV обычно используется в сочетании с гипервизором с поддержкой SR-IOV для предоставления виртуальным машинам прямого аппаратного доступа к сетевым ресурсам, что повышает их производительность.

    В этом руководстве демонстрируется установка и конфигурация SR-IOV с использованием семейства плат адаптеров Mellanox. SR-IOV VF — это однопортовое устройство.

    SR-IOV через Hyper-V

    Сервер и BIOS с поддержкой SR-IOV.

    Примечание. Для включения поддержки виртуализации и поддержки SR-IOV может потребоваться обновление настроек BIOS.

    • Ethernet: Windows Server 2012 R2 и выше
    • IPoIB: Windows Server 2016 и выше
    • SR-IOV Ethernet через Hyper-V: WinOF-2 v1.20 или выше
    • SR-IOV IPoIB через Hyper-V и гостевую систему: WinOF-2 v1.80 или выше и на Windows Server 2016

    Ограничения функций

    • SR-IOV в узле IPoIB:
      • IPoIB на основе LID поддерживается со следующими ограничениями:
        • Он не поддерживает маршрутизаторы в структуре.
        • Он поддерживает до 2^15-1 LID.

        Настройка хост-компьютеров SR-IOV

        В разделах ниже описаны необходимые процессы для настройки хост-компьютеров:

        Включение SR-IOV в BIOS

        В зависимости от вашей системы выполните следующие действия, чтобы настроить BIOS. Рисунки, используемые в этом разделе, предназначены только для иллюстрации.

        Дополнительную информацию см. в соответствующем руководстве пользователя BIOS.

        Рекомендуется включить параметр BIOS «декодирование выше 4G» для функций, требующих большого количества ресурсов PCIe.


        Чтобы включить SR-IOV в BIOS:

        Установка операционной системы гипервизора


        Чтобы установить операционную систему гипервизора:

        < бр />

        1. Установите Windows Server 2012 R2
        2. Установите роль Hyper-V:
          • Перейдите в раздел: Диспетчер серверов -> Управление -> Добавить роли и компоненты и установите следующие параметры:
          1. Тип установки -> Установка на основе ролей или компонентов
          2. Выбор сервера -> Выберите сервер из пула серверов
          3. Роли сервера -> Hyper-V (см. рисунки ниже)

          < бр />

          Перезагрузите систему.

          Проверка поддержки SR-IOV в операционной системе хоста


          Чтобы убедиться, что система правильно настроена для SR-IOV:

          Выполните следующие команды PowerShell.

          < бр />

          Если ОС поддерживает SR-IOV, выходные данные в PowerShell будут такими, как показано на рисунке ниже.

          Если BIOS был обновлен в соответствии с инструкциями поставщика BIOS и вы видите сообщение, показанное на рисунке ниже, обновите конфигурацию реестра, как описано в сообщении (Get-VmHost).IovSupportReasons.

          < бр />

          Проверка наличия в адаптере достаточных ресурсов для включения виртуальных функций SR-IOV


          Чтобы проверить достаточность ресурсов в адаптере для включения SR-IOV VF:

          Выполните следующие команды PowerShell.

          Если в поле SriovSupport указано значение NoVfBarSpace , SR-IOV нельзя использовать на этом сетевом адаптере, так как ресурсов PCI Express BAR недостаточно.

          Чтобы использовать SR-IOV, необходимо уменьшить количество VF до числа, поддерживаемого ОС.

          Создание виртуальной машины


          Чтобы создать виртуальную машину:

          Настройка лимита памяти хоста на VF

          В режиме SR-IOV хост выделяет ресурсы памяти в соответствии с потребностями адаптера для каждой виртуальной функции. Важно ограничить объем памяти, которую VF может получить от хоста, чтобы обеспечить стабильность хоста. Чтобы предотвратить чрезмерное выделение, ключ реестра MaxFWPagesUsagePerVF должен быть настроен на максимальное количество страниц размером 4 КБ, которые хост может выделить для ресурсов VF. В случае попытки использовать больше страниц, чем настроено, в журнал системных событий будет напечатано сообщение об ошибке. Дополнительные сведения см. в разделе Параметры SR-IOV.

          Настройка сетевого адаптера Mellanox для SR-IOV

          В разделах ниже описаны необходимые процессы для настройки сетевого адаптера Mellanox для SR-IOV:

          Включение SR-IOV в прошивке

          Для карт, произведенных не Mellanox (OEM), может потребоваться загрузить и установить новую прошивку.


          Чтобы включить SR-IOV с помощью mlxconfig:

          mlxconfig является частью инструментов MFT, используемых для упрощения настройки прошивки. Инструмент доступен с инструментами MFT версии 3.6.0 или выше.

          Перед началом установки убедитесь, что соблюдены следующие требования:

          Версия Hyper-V для Windows Server 2012 R2

          Версия Hyper-V для Windows Server 2016

          Следующую процедуру можно использовать для развертывания виртуального устройства Mobility Controller или виртуального устройства Mobility Master в Windows Hyper-V.

          Установка ArubaOS на Windows Server Hyper-V

          <р>1. Войдите на сервер Windows.

          <р>2. Откройте диспетчер Hyper-V.

          <р>3.Выберите хост-компьютер Hyper-V на панели навигации.

          <р>4. Щелкните правой кнопкой мыши хост-компьютер и выберите «Создать» > «Виртуальная машина». Нажмите Далее .

          Рис. 1. Создание новой виртуальной машины

          <р>5. Введите имя виртуальной машины ВМ. ВМ — это эмуляция компьютерной системы. Виртуальные машины основаны на компьютерных архитектурах и обеспечивают функциональность физического компьютера. на экране «Укажите имя и местоположение». Если вы хотите сохранить машину в месте, отличном от используемого по умолчанию, установите флажок Сохранить виртуальную машину в другом месте.

          <р>7. Выделите 4096 МБ в качестве загрузочной памяти. Нажмите Далее .

          <р>8. Нажмите «Далее» на экране «Настройка сети». Сеть будет настроена позже.

          <р>9. Введите имя для первого виртуального диска. Второй виртуальный диск будет добавлен позже. Нажмите Далее .

          <р>10. Выберите Установить операционную систему с загрузочного CD/DVD-ROM.

          <р>11. Выберите файл изображения (.iso) и нажмите кнопку «Обзор», чтобы перейти к расположению файла iso. Выберите iso-файл и нажмите "Далее" .

          <р>12. Нажмите Готово .

          Рис. 2. Завершение установки

          Настройка новой ВМ

          <р>2. Выберите «Процессор» на панели «Оборудование» и установите количество виртуальных процессоров в соответствии с вашими требованиями. Дополнительные сведения см. в разделе «Что нового».

          Рис. 3. Настройки виртуального процессора

          <р>3. Щелкните Контроллер IDE 0 . Выберите «Жесткий диск» и нажмите «Добавить», чтобы добавить второй жесткий диск.

          Рис. 4. Добавление второго виртуального диска

          <р>5. Нажмите «Далее» в окне мастера создания нового виртуального жесткого диска.

          <р>6. Выберите VHDX в качестве формата диска и нажмите «Далее».

          <р>7. Выберите Динамическое расширение в качестве типа диска. Нажмите Далее .

          В разделе «Оборудование» > «Процессор» виртуальной машины виртуальной машины. ВМ — это эмуляция компьютерной системы. Виртуальные машины основаны на компьютерных архитектурах и обеспечивают функциональность физического компьютера. Убедитесь, что Максимальное количество процессоров и Максимальный объем памяти на одном виртуальном узле NUMA в топологии NUMA всегда должны быть больше, чем значения, настроенные для мастера мобильности. Если количество процессоров или памяти, выделенных для Mobility Master, больше, чем указано в конфигурации NUMA, количество узлов и сокетов NUMA автоматически увеличится, и Mobility Master не загрузится.

          Создание сетевого адаптера

          <р>1. Выберите «Добавить оборудование» на панели «Оборудование».

          <р>2. Выберите «Сетевой адаптер» и нажмите «Добавить» .

          <р>3. Выберите виртуальный коммутатор из раскрывающегося списка.

          <р>4. Выберите «Аппаратное ускорение» и убедитесь, что флажки «Включить очередь виртуальных машин» и «Включить разгрузку задач IPsec» сняты.

          <р>5. Выберите Дополнительные функции и выполните следующие действия:

          а. Установите флажок Включить подмену MAC-адресов.

          б. Отключить защищенную сеть .

          Рис. 5. Дополнительные функции

          <р>6. Нажмите Применить > ОК .

          Создайте 3 сетевых адаптера для развертывания виртуального устройства Mobility Master и 4 сетевых адаптера для развертывания виртуального устройства Mobility Controller.

          Рис. 6. Перезапустите виртуальную машину

          Настройка магистральных портов

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

          Удалить-VMNetworkAdapter -vmname VMC

          Добавить интерфейс управления:

          Add-VMNetworkAdapter -VMName VMC -Name mgmt

          Set-VMNetworkAdapter -VMName VMC -Name mgmt -IPsecOffloadMaximumSecurityAssociation 0 -VmqWeight 0 -NotMonitoredInCluster $true

          Добавить интерфейсы данных:

          Add-VMNetworkAdapter -VMName VMC -Name p1

          Set-VMNetworkAdapter -VMName VMC -Name p1 -IPsecOffloadMaximumSecurityAssociation 0 -VmqWeight 0 -NotMonitoredInCluster $true -MacAddressSpoofing on

          Set-VMNetworkAdapterVlan -VMName VMC -VMNetworkAdapterName p1 -Trunk -AllowedVlanIdList "1-4094" -NativeVlanId 0

          Повторите команды, чтобы создать 2 виртуальных сетевых адаптера, если используемое устройство является виртуальным устройством Mobility Master, или 3 виртуальных сетевых адаптера, если устройство является виртуальным устройством Mobility Controller.

          Эти интерфейсы затем можно добавить к виртуальным коммутаторам, добавленным через пользовательский интерфейс пользователя. .

          Несколько раз я сталкивался с ситуацией, когда файлы копировались гораздо медленнее с/на виртуальные машины на узле Hyper-V под управлением Windows Server 2019, чем на ВМ той же конфигурации на узле под управлением Windows Server 2016. В некоторых тестах , скорость чтения/записи по сети на ВМ на Windows Server 2019 почти в три раза ниже, чем на WS2016 (проверялось копирование по SMB, SSH/SCP). В этой статье я попытался описать несколько различных методов повышения производительности сети виртуальных машин Hyper-V, работающих на Windows Server 2019 (и последних сборках Windows 10 и 11).

          Объединение сегментов приема (RSC) в коммутаторе Hyper-V vSwitch

          Прежде всего следует отметить функцию объединения сегментов приема (RSC), которая появилась в Hyper-V в Windows Server 2019/2022 (и Windows 10 1809+).Объединение сегментов приема используется на уровне виртуального коммутатора (vSwitch). RSC позволяет снизить нагрузку на ЦП и увеличить пропускную способность сети за счет объединения нескольких сегментов TCP в более крупные. Производительность сети повышается, поскольку большие сегменты обрабатываются быстрее, чем множество мелких.

          В предыдущих версиях Hyper-V (Windows Server 2016/2012R2) на уровне сетевой карты поддерживался только аппаратный режим объединения сегментов приема.

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

          По умолчанию RSC включен для всех внешних виртуальных коммутаторов в Windows Server 2019.

          Вы можете проверить, включен ли RSC для виртуальных коммутаторов, используя команду:

          Get-VMSwitch | Выбрать-объект *RSC*

          Вы можете отключить использование RSC для трафика IPv4 на клиентском сетевом адаптере с помощью следующей команды:

          Disable-NetAdapterRsc -Name "Ethernet" -IPv4

          Проверьте, увеличилась ли скорость копирования на виртуальной машине Hyper-V после отключения RSC. Если скорость сети увеличилась, вы можете отключить RSC на виртуальном коммутаторе, к которому подключена виртуальная машина.

          Чтобы отключить программный RSC для определенного виртуального коммутатора, выполните команду:

          Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false

          проверьте, включен ли RSC на коммутаторе Hyper-V

          Или вы можете полностью отключить RSC на хосте Windows:

          netsh int tcp set global rsc=disabled

          Режим очереди виртуальных машин (VMQ) в драйвере сетевого адаптера

          В некоторых случаях, если VMQ (очередь виртуальных машин) включена в драйвере сетевого адаптера физического хоста Hyper-V, это может привести к снижению производительности сети на виртуальных машинах Hyper-V. VMQ — это аппаратная функция, и если она не поддерживается вашим оборудованием, но включена в драйвере, это может привести к потере пакетов и увеличению задержки в сети. Проблема характерна для сетевых адаптеров Broadcom Gigabit и возникает во всех версиях Hyper-V (Windows Server 2012 R2/2016/2019).

          VMQ предназначен для повышения производительности сети за счет прямой пересылки пакетов с физического сетевого адаптера на виртуальные машины.

          Вы можете отключить VMQ в свойствах драйвера сетевого адаптера.

          отключить VMQ (очередь виртуальных машин) в настройках драйвера сетевой карты

          Или вы можете отобразить список сетевых адаптеров с поддержкой VMQ и их статус с помощью PowerShell:

          Чтобы отключить VMQ для определенной сетевой карты, выполните приведенную ниже команду (сетевой адаптер будет недоступен в течение нескольких секунд):

          Set-NetAdapterVmq -Name "NICName" -Enabled $False

          проверьте, включен ли vmq в сетевом адаптере - powershell

          После отключения VMQ лучше перезапустить хост и проверить производительность сети.

          Оптимизация параметров TCP для Hyper-V в Windows Server 2019

          Сохраните текущие настройки TCP на хосте Hyper-V и примените новые настройки, которые сделают настройки TCP в Windows Server 2019 почти такими же, как в Windows Server 2016.

          Сохранить текущие настройки:

          Get-NetTCPSetting -SettingName Datacenter,DatacenterCustom,InternetCustom,Internet|выберите SettingName,CongestionProvider,CwndRestart,ForceWS|Export-csv c:\backup\ws2019_network_stack_settings_nettcp_backup.csv

          По умолчанию в Windows Server 2019 и Windows 10 1709+ используется реализация TCP CUBIC. Этот алгоритм оптимизирован для высокоскоростных сетей с высокой задержкой (он также используется по умолчанию в ядре Linux 2.6.19 и новее).

          Стек Windows TCP в Windows Server 2019 на основе CUBIC

          Применить новые настройки NetTCP для локальной сети:

          Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
          Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
          Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled

          Set-NetTCPSetting -SettingName InternetCustom,Internet -CongestionProvider CTCP
          Set-NetTCPSetting -SettingName InternetCustom,Internet -DelayedAckTimeoutMs 50
          Set-NetTCPSetting -SettingName InternetCustom,Internet -ForceWS Disabled

          Отключить сетевые методы оптимизации сети RSS и RSC на уровне стека TCP:

          netsh int tcp show global
          netsh int tcp set global RSS=Disabled
          netsh int tcp set global RSC=Disabled

          или на уровне сетевой карты:

          Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Объединение сегментов Recv (IPv4)" -DisplayValue "Отключено" -NoRestart
          Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Объединение сегментов Recv (IPv6)" -DisplayValue "Отключено" -NoRestart
          Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName «Масштабирование стороны приема» -DisplayValue «Отключено» – NoRestart

          Отключить vRSS для всех ВМ:

          Получить виртуальную машину | Set-VMNetworkAdapter -VrssEnabled $FALSE

          Отключите разгрузку больших пакетов (LSO) на сетевых адаптерах:
          Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue "Отключено" -NoRestart
          Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv6)" -DisplayValue "Отключено" -NoRestart
          Get-NetAdapter | Перезапуск NetAdapter

          • Объединение сегментов Recv (IPv4/IPv6) = отключено
          • Крупная разгрузка отправки, версия 2 (IPv4/IPv6) = отключена

          отключить объединение сегментов recv на гипер-v

          Эти настройки стека TCP сделают настройки сетевого протокола Windows Server 2019 такими же, как в предыдущих версиях Windows Server.

          Читайте также: