SR-IOV Support — что это в биосе? (AMD/Intel)
Приветствую друзья! SR-IOV Support — технология виртуализации устройств, позволяющая виртуальным машинам использовать аппаратные возможности устройства.
Данная опция может применяться только в серверных решениях, для обычных компьютеров она не нужна.
Также можно почитать инфу на VMware Docs (энглиш).
Информация для специалистов:

Если правильно понимаю, простыми словами SR-IOV — виртуализация, дающая доступ к реальным аппаратным функциям устройства. Сами устройства могут быть разные, чаще всего — сетевые платы. При помощи SR-IOV виртуальная машина будет передавать данные напрямую сетевой карте, что улучшит скорость/отклик работы сети в виртуалке.
Виртуальная машина — что это такое? Простыми словами — обычный ПК, который имеет свой процессор, свой обьем оперативной памяти, жесткий диск, операционку с установленным в ней софтом. Однако в теории все это — отдельный ПК. По факту — программа, которая эмулирует виртуальный ПК. Таких компьютеров может быть несколько, десятки. Они могут сдаваться в аренду (VPS). Работают 24 часа. Все они работают на специальном компе, который именуется сервером.
Примерный принцип работы SR-IOV показан на следующих скриншотах:


Правда понять смогут только профессионалы..
Нужно ли включать SR-IOV Support?
Опция SR-IOV Support нужна в первую очередь серверам, призвана для улучшения работы виртуальных машин.
Виртуальная машина всегда использует физические ресурсы ПК. Исключение — облачные машины, но пока все это сырое. Однако виртуальная машина никогда не будет иметь производительность, которая равна физической машины. Да, она высока, два года назад VMware заявляла — их виртуальные машины позволяют использовать до 80% производительности физической машины.
Можно сделать вывод — обычному домашнему пользователю данная опция не нужна. Если она была по умолчанию включена — пусть остается.

Если не знаете как было выставлено по умолчанию, и при этом присутствует пункт Auto — выберите его.
Physical Function и Virtual Function
Не совсем понятно значение данных терминов, поэтому привожу информацию из интернета:
Включаем поддержку SR-IOV для виртуальных машин Hyper-V
22.09.2021
itpro
Hyper-V, PowerShell, Windows Server 2019, Виртуализация
комментарий 21
SR-IOV (Single Root Input/Output Virtualization) это технология виртуализации аппаратных устройств хоста, позволяющая предоставить виртуальным машинам прямой доступ к устройствам. Технология позволяет виртуализировать различные виды устройств, но чаще всего используется для виртуализации сетевых адаптеров. В этой статье мы расскажем, как правильно включить и настроить SR-IOV для сетевых адаптеров виртуальных машин на сервере Hyper-V.
SRV-IOV поддерживается в Hyper-V начиная с версии 2012, в том числе в бесплатном Hyper-V Server. Мы не будем погружаться в теорию SR-IOV, вы можете найти подробное описание технологии в сети. Для практического понимания достаточно знать, что SR-IOV позволяет предоставить доступ виртуальным машинам непосредственно к физическим сетевым адаптерам хоста, минуя обработку трафика виртуальными коммутаторами Hyper-V. Один физический сетевой адаптер в режиме SR-IOV может обслуживать несколько виртуальных машин.
Благодаря использованию SR-IOV для виртуальных машин Hyper-V вы существенно увеличите пропускную способность, снизите сетевую задержку и уменьшите нагрузку на CPU, вызванную необходимостью обрабатывать сетевой трафик программными средствами Hyper-V.
Чтобы SRV-IOV работала на вашем хосте Hyper-V нужно выполнять ряд условий.
В первую очередь нужно включить поддержку SR-IOV и виртуализации в BIOS вашего сервера. В зависимости от вендора и модели сервера эти настройки могут отличаться.
- Виртуализация: Intel (Virtualization Technology, Intel VT, VT-d, Vanderpool), AMD (SVM, AMD-V)
- IOMMU
- SR-IOV
- ASPM

Каких-то пунктов может и не быть, даже пункта SR-IOV. Но это не означает, что SR-IOV не поддерживается сервером. Например, на материнских платах Supermicro пункт SR-IOV может отсутствовать, и при этом есть отключенный по умолчанию пункт ASPM. Если включить ASPM и поддержку виртуализации, то SR-IOV включится автоматически.
Вы можете проверить, поддерживается ли технология SR-IOV вашим Hyper-V сервером на аппаратном уровне с помощью PowerShell:

Если ваш сервер поддерживает эту функцию, то в поле IovSupport будет указано True. Если не поддерживает, то False. При этом в пункт IovSupportReasons будет описание причины, из-за которой SR-IOV не поддерживается. Причина как правило указывается довольно подробно. Вот типовые причины:
- Ensure that the system has chipset support for SR-IOV and that I/O virtualization is enabled in the BIOS.
- To use SR-IOV on this system, the system BIOS must be updated to allow Windows to control PCI Express. Contact your system manufacturer for an update.
- To use SR-IOV on this computer, the BIOS must be updated because it contains incorrect information describing the hardware capabilities. Contact your computer manufacturer for an update.
- SR-IOV cannot be used on this computer because the processor does not support second-level address translation (SLAT). For Intel processors, this feature might be referred to as Extended Page Tables (EPT). For AMD processors, this feature might be referred to as Rapid Virtualization Indexing (RVI) or Nested Page Tables (NPT).
- The chipset on the system does not do interrupt remapping, without which SR-IOV cannot be supported.
- The chipset on the system does not do DMA remapping, without which SR-IOV cannot be supported.
- SR-IOV cannot be used on this system as it has been configured to disable the use of I/O remapping hardware.
- SR-IOV cannot be used on this system as it is reporting that there is no PCI Express Bus. Contact your system manufacturer for further information.
- SR-IOV cannot be used on this system as the PCI Express hardware does not support Access Control Services (ACS) at any root port. Contact your system vendor for further information.
Полный вывод команды get-vmswitch | fl *iov* дает ряд полезной информации. Например:
Такие цифры сразу покажут сколько виртуальных устройств IOV доступно и сколько уже использовано виртуальными машинами.
При создании виртуального коммутатора Hyper-V нужно установить галочку поддержки SR-IOV — Enable single-root I/O virtualization (SR-IOV).

Либо включать опцию EnableIOV при создании коммутатора из командной строки PowerShell:
New-VMSwitch -Name «Ext_network» -NetAdapterName «Ethernet 2» -EnableIov 1
Причём наличие поддержки SR-IOV на самом хосте гипервизора вовсе не означает, что оно заработает на конкретном виртуальном коммутаторе. Нужно что бы этот коммутатор был привязан к сетевому адаптеру с поддержкой SR-IOV.
Есть еще один нюанс. На материнской плате может быть несколько сетевых адаптеров, но SR-IOV может поддерживаться только на части из них. Причём поддержка SR-IOV самим адаптером по даташиту вовсе не означает, что оно работает на данной конкретной материнской карте!
Поэтому после сборки коммутатора проверьте его командой:
get-vmswitch | select IovSupport, IovSupportReasons, IovEnabled
Параметр IovEnabled показывает включен ли он.
Список сетевых адаптеров с поддержкой SR-IOV можно вывести с помощью PowerShell:
Get-NetAdapterSriov | sort name | ft Name, InterfaceDescription, SriovSupport
После того, как SR-IOV включен на уровне гипервизора и виртуального коммутатора, теперь его можно включить в виртуальных машинах (по умолчанию выключено). Опция Enable SR-IOV доступ в секции Hardware Acceleration сетевой карты виртуальной машины.

Либо можно включить SR-IOV для сетевого адаптера виртуальной машины через PowerShell:
Set-VMNetworkAdapter -VMName testvm -VMNetworkAdapterName “Network Adapter” -IovWeight 100
Ошибки при работе SR-IOV пишутся на Hyper-V в отдельный журнал в Event Viewer:
Application and Services Logs -> Microsoft -> Windows -> Hyper-V-SynthNic -> Admin.
Если SR-IOV работает штатно, то при запуске виртуальной машины в логе будут такие записи:
Технология SR-IOV дает хороший буст сетевой производительности виртуальных машин и гипервизора в целом. Максимальные результаты от использования SR-IOV вы заметите на хостах Hyper-V с большим трафиком виртуальных машин, который вызывает сильную нагрузку на хостовые CPU.
Предыдущая статья Следующая статья



alt=»import-vm командлет powershell» width=»58″ height=»56″ /> Клонирование, импорт и экспорт виртуальных машин в Hyper-V
alt=»Новые настройки Get-NetTCPSetting в Windows Server 2019″ width=»58″ height=»56″ /> Низкая скорость сети на хосте Hyper-V с Windows Server 2019
alt=»ignoreHeadless=TRUE — добавить параметр при установке vmware esxi» width=»58″ height=»56″ />Установка VMWare ESXi в виртуальную машину Windows Hyper-V
alt=»назначить ip адреса шлюзов hyper-v коммутаторам» width=»58″ height=»56″ />Маршрутизация между разными IP подсетями в Hyper-V
Спасибо. А нет ли опыта включения SR-IOV на материнских платах ASUS?
Вот какой результат дает диагностика:
(get-vmhost).IovSupport
True
(get-vmhost).IovSupportReasons
Вторая функция ничего не возвращает.
У Вас уже всё работает (IovSupport=True). Если НЕ работает, то IovSupportReasons указывается причина почему не работает (а если работает ,то там пусто).
Пересобирайте теперь виртуальный коммутатор (если он был собран без галки SR-IOV) и проверяйте работает ли в нём.
Если функция (get-vmhost).IovSupportReasons не возвращает ничего, то это не означает, что все работает.
В логах есть несколько ошибок:
Master_179_0_0: EXT_QP_MAX_RETRY_LIMIT/EXT_QP_MAX_RETRY_PERIOD registry keys were requested by user but FW does not support this feature. Please upgrade your firmware to support it.
For more details, please refer to WinOF User Manual.
Master_179_0_0: SRIOV cannot be enabled. Running in single-function mode.
Bios на материнке и сетевых картах последний. Вполне вероятно, что MB Asus bios не поддерживает эту функцию.
Да, я не совсем верно выразился. IovSupport=True не означает, что SR-IOV работает. Это означает, что хост в принципе поддерживает эту технологию и, в частности, то, что она включена в BIOS’е.
При этом (get-vmhost).IovSupportReasons возвращает либо «ОК» либо пустое значение (вероятно в зависимости от версии ОС, но это не точно). Короче IovSupportReasons имеет смысл если IovSupport=False.
Но что бы технология заработала нужна ещё поддержка стороны сетевого адаптера. И об этом мы узнаем собрав коммутатор и проверив в нём вывод:
get-vmswitch | select IovSupport, IovSupportReasons, IovEnabled
Если сетевой адаптер не поддерживает технологию или производитель мамки не посчитал нужным её реализовывать, то увы. Видимо это как раз ваша ситуация. Мать вероятно не серверная?
(собственно в посте всё это написано, тут я ничего нового не сказал)
Кстати я предпочитаю команды:
get-vmhost | fl
и
get-vmswitch | fl
Они дают более подробный вывод.
>Мать вероятно не серверная?
Верно, игровая.
IovVirtualFunctionCount : 8
IovVirtualFunctionsInUse : 0
Написал производителям БИОСа, может помогут разобраться.
Можно полный вывод «get-vmswitch | fl» увидеть? Любопытно.
Вообще я предполагаю, что на не серверных матерях мало шансов встретить рабочую реализацию. Тем более если сетевуха интегрированная, скорее всего она в принципе такое не умеет. Можно попробовать воткнуть PCI-E сетевую карту. Но опять же предполагаю, что это должна быть серверная сетевая карта, а они стоят весьма нарядно.
Name : Mellanox
Id : fb7cb754-7256-45c2-83ea-8dbb64b63a47
Notes :
Extensions :
BandwidthReservationMode : None
PacketDirectEnabled : False
EmbeddedTeamingEnabled : True
AllowNetLbfoTeams : False
IovEnabled : True
SwitchType : External
AllowManagementOS : True
NetAdapterInterfaceDescription : Teamed-Interface
NetAdapterInterfaceDescriptions :
NetAdapterInterfaceGuid : <552ea5fb-766d-4714-ac65-028da6379fb3>
IovSupport : True
IovSupportReasons :
AvailableIPSecSA : 0
NumberIPSecSAAllocated : 0
AvailableVMQueues : 516096
NumberVmqAllocated : 1
IovQueuePairCount : 8027
IovQueuePairsInUse : 16
IovVirtualFunctionCount : 8
IovVirtualFunctionsInUse : 0
PacketDirectInUse : False
DefaultQueueVrssEnabledRequested : True
DefaultQueueVrssEnabled : True
DefaultQueueVmmqEnabledRequested : True
DefaultQueueVmmqEnabled : True
DefaultQueueVrssMaxQueuePairsRequested : 16
DefaultQueueVrssMaxQueuePairs : 8
DefaultQueueVrssMinQueuePairsRequested : 1
DefaultQueueVrssMinQueuePairs : 1
DefaultQueueVrssQueueSchedulingModeRequested : StaticVrss
DefaultQueueVrssQueueSchedulingMode : StaticVrss
DefaultQueueVrssExcludePrimaryProcessorRequested : False
DefaultQueueVrssExcludePrimaryProcessor : False
SoftwareRscEnabled : True
RscOffloadEnabled : False
BandwidthPercentage : 0
DefaultFlowMinimumBandwidthAbsolute : 0
DefaultFlowMinimumBandwidthWeight : 0
CimSession : CimSession: .
ComputerName : HV3
IsDeleted : False
DefaultQueueVmmqQueuePairs : 8
DefaultQueueVmmqQueuePairsRequested : 16
Так, но тут же видно, что на уровне виртуального коммутатора тоже всё работает.
Надо смотреть что в логе Application and Services Logs -> Microsoft -> Windows -> Hyper-V-SynthNic -> Admin.
Вот те логи, которые Вы выше приводили, они откуда взяты?
У вас там никакой тиминг не используется случайно? Смущает «NetAdapterInterfaceDescription : Teamed-Interface».
Брали логи из mlx4_bus
>Application and Services Logs -> Microsoft -> Windows -> Hyper-V-SynthNic -> Admin.
Такого нет. Есть Application and Services Logs -> Microsoft -> Windows -> Hyper-V-VmSwitch -> Operational. Там ошибок нет.
Создавали VMSwitch с помощью команды:
New-VMSwitch -Name Mellanox -NetAdapterName «M12_4» -EnableEmbeddedTeaming $true -EnableIov $true
Нашли логи в Application and Services Logs -> Microsoft -> Windows -> Hyper-V-Worker -> Admin.
12582 Network Adapter (D177948B-D880-42BC-ADDC-46B26F6FBFA8) started successfully. (Virtual Machine ID 364A642F-EB19-4900-B2F5-1AE3236FF9AE)
12597 Network Adapter (364A642F-EB19-4900-B2F5-1AE3236FF9AE—D177948B-D880-42BC-ADDC-46B26F6FBFA8) Connected to virtual network. (Virtual Machine ID 364A642F-EB19-4900-B2F5-1AE3236FF9AE)
12584 Network Adapter (364A642F-EB19-4900-B2F5-1AE3236FF9AE—D177948B-D880-42BC-ADDC-46B26F6FBFA8) allocated a virtual function. (Virtual Function ID 0 LUID 0:22233d77 Virtual Machine ID 364A642F-EB19-4900-B2F5-1AE3236FF9AE)
12589 The description for Event ID 12589 from source Microsoft-Windows-Hyper-V-SynthNic cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.
If the event originated on another computer, the display information had to be saved with the event.
The following information was included with the event:
rds5
364A642F-EB19-4900-B2F5-1AE3236FF9AE
364A642F-EB19-4900-B2F5-1AE3236FF9AE—D177948B-D880-42BC-ADDC-46B26F6FBFA8
Network Adapter
0
0:22233d77
%%2147942431
0x8007001F
The system cannot find message text for message number 0x%1 in the message file for %2
12586 Network Adapter (364A642F-EB19-4900-B2F5-1AE3236FF9AE—D177948B-D880-42BC-ADDC-46B26F6FBFA8) freed a virtual function. (Virtual Function ID 0 Virtual Machine ID 364A642F-EB19-4900-B2F5-1AE3236FF9AE)
mlx4_bus это видимо какая-то проприетарщина от производителя сетевого адаптера? Я с такими адаптерами дела не имел поэтому тут мне что-то трудно комментировать.
По логам видно, что виртуальная машина пытается получить виртуализированный адаптер (id 12584). Затем происходит нечто, что не имеет описания (id 12589). И далее машина виртуализированный адаптер сразу высвобождает (id 12586).
При этом забавно, что сам гипервизор считает, что ничего препятствующего работе SR-IOV нет.
Что здесь происходит сложно сказать. На вашем месте я бы попробовал пересобрать коммутатор без параметра «-EnableEmbeddedTeaming $true». Но я не знаю для каких целей Вы его включали. Если просто для красоты, то он явно не нужен. Я собирал без него и у меня всё работает (правда у меня сетевые адаптеры от Intel и мать серверная SuperMicro).
Автор в начале статьи упомянул, что SR-IOV не совместим с NIC teaming. Может быть в этом вся причина.
С другой стороны этот mlx4_bus пишет что-то про «FW не поддерживает эту функцию». Но имеется ли в виду SR-IOV?
Собрал коммутатор без параметра -EnableEmbeddedTeaming $true. Результат тот же.
У меня сетевой адаптер с двумя портами на 40 GB. объединил их для увеличения количества
виртуальных функций. Результат тот же.
В Биосе включил технологии управляющие питанием. Результат тот же.
Все же прихожу к выводу, что не поддерживает материнская плата.
материнская плата SuperMicro H12SSL-NT, ОС Server 2019 Standart.
почемуто на родных сетевых картах Broadcom 10GBASE-T показывает SriovSupport — Not Supported, что странно.
Отдельно поставили Intel X520 — там показывает Supported. Собственно SR-IOV нам только на Intel и нужен. Но всёже загадка почему на Broadcom не работает.
да и (get-vmhost).IovSupportReasons не показывает вообще ничего, но (get-vmhost).IovSupport показывает нормально True.
виртуальный коммутатор вроде создал, вроде работает, но не пойму всё ли правильно или нет. У меня кстати тоже нету в журналах Hyper-V-SynthNic, но в остальных вообще ниодной ошибки.
«почемуто на родных сетевых картах Broadcom 10GBASE-T показывает SriovSupport — Not Supported»
Это где так показывает? В информации о коммутаторе собранном на Броадкомах? IovSupportReasons при этом что показывает?
«Но всёже загадка почему на Broadcom не работает»
Потому что этот броадком может не поддерживать данную технологию либо она может быть не реализована производителем матери. У меня Супермикра с четырьмя сетевухами Интел на борту. Все эти сетевухи по даташиту поддерживают SR-IOV. Но работает оно только на двух.
«да и (get-vmhost).IovSupportReasons не показывает вообще ничего»
Это нормально. В Reasons показывает причину почему НЕ работает. А если работает там будет либо «OK» либо просто пусто (от версии ОС зависит видимо).
«виртуальный коммутатор вроде создал, вроде работает»
Если «get-vmswitch | fl» выдает IovSupport=True и IovEnabled=True значит всё работает.
«У меня кстати тоже нету в журналах Hyper-V-SynthNic»
У меня гипервизоры на 2012 R2. Может в 2019-ом переименовали. Выше написали, что вроде нашли их в Application and Services Logs -> Microsoft -> Windows -> Hyper-V-Worker -> Admin.
Get-NetAdapterSriov | sort name | ft Name, InterfaceDescription, SriovSupport
Name InterfaceDescription SriovSupport
—- ——————— ————
LAN1(MAIN) Intel(R) Ethernet Server Adapter X520-2 #2 Supported
LAN2(GUEST) Supermicro 10GBASE-T Ethernet Controller #2 NotSupported
LAN3(BACKUP) Intel(R) Ethernet Server Adapter X520-2 Supported
WAN(INTERNET) Supermicro 10GBASE-T Ethernet Controller NotSupported
В информации о коммутаторе собранном на Броадкомах?
не, на броадкомах как раз не собирал. Нам надо как раз на Intel.
Потому что этот броадком может не поддерживать данную технологию либо она может быть не реализована производителем матери.
ну както странно. Современная материнка под AMD EPYC на базе ZEN2 и ZEN3 (именно новая модель а не новая ревизия старой от первых EPYC под новые), современные 10Гбит\с сетевые адаптеры Dual 10GBase-T LAN via Broadcom BCM57416, и показывает NotSupported.
Если «get-vmswitch | fl» выдает IovSupport=True и IovEnabled=True значит всё работает.
ну вот так както, и вроде работает:
Name : LAN1(MAIN)
Id : b9f6fd7a-5fe2-49b5-a76d-d4d40dc9b486
Notes :
Extensions : <Платформа фильтрации Microsoft Windows, Захват Microsoft NDIS>
BandwidthReservationMode : None
PacketDirectEnabled : False
EmbeddedTeamingEnabled : False
IovEnabled : True
SwitchType : External
AllowManagementOS : True
NetAdapterInterfaceDescription : Intel(R) Ethernet Server Adapter X520-2 #2
NetAdapterInterfaceDescriptions :
NetAdapterInterfaceGuid :
IovSupport : True
IovSupportReasons :
AvailableIPSecSA : 2048
NumberIPSecSAAllocated : 0
AvailableVMQueues : 1
NumberVmqAllocated : 1
IovQueuePairCount : 127
IovQueuePairsInUse : 4
IovVirtualFunctionCount : 62
IovVirtualFunctionsInUse : 0
PacketDirectInUse : False
DefaultQueueVrssEnabledRequested : True
DefaultQueueVrssEnabled : True
DefaultQueueVmmqEnabledRequested : True
DefaultQueueVmmqEnabled : True
DefaultQueueVrssMaxQueuePairsRequested : 16
DefaultQueueVrssMaxQueuePairs : 2
DefaultQueueVrssMinQueuePairsRequested : 1
DefaultQueueVrssMinQueuePairs : 1
DefaultQueueVrssQueueSchedulingModeRequested : StaticVrss
DefaultQueueVrssQueueSchedulingMode : StaticVrss
DefaultQueueVrssExcludePrimaryProcessorRequested : False
DefaultQueueVrssExcludePrimaryProcessor : False
SoftwareRscEnabled : True
BandwidthPercentage : 0
DefaultFlowMinimumBandwidthAbsolute : 0
DefaultFlowMinimumBandwidthWeight : 0
CimSession : CimSession: .
ComputerName : TEST
IsDeleted : False
DefaultQueueVmmqQueuePairs : 2
DefaultQueueVmmqQueuePairsRequested : 16
Ну вот кстати командлет Get-NetAdapterSriov (про который я не знал) показывает же информацию поддерживается ли и если не поддерживается, то почему. Скажем у меня вывод такой:
Name : Ethernet 6
InterfaceDescription : Intel(R) I350 Gigabit Network Connection #3
Enabled : True
SriovSupport : Supported
SwitchName : DefaultSwitchName
NumVFs : 6
Name : Ethernet 7
InterfaceDescription : Intel(R) I350 Gigabit Network Connection #4
Enabled : True
SriovSupport : Supported
SwitchName : DefaultSwitchName
NumVFs : 6
Name : Ethernet 5
InterfaceDescription : Intel(R) Ethernet Controller X540-AT2 #2
Enabled : True
SriovSupport : NoVfBarSpace
SwitchName : DefaultSwitchName
NumVFs : 62
Name : Ethernet 4
InterfaceDescription : Intel(R) Ethernet Controller X540-AT2
Enabled : True
SriovSupport : NoVfBarSpace
SwitchName : DefaultSwitchName
NumVFs : 62
На обоих X540 указано NoVfBarSpace (расшифровку причин можно посмотреть здесь: https://docs.microsoft.com/en-us/powershell/module/netadapter/get-netadaptersriov?view=windowsserver2019-ps).
И возможно даже кручением разных настроек в биосе удастся заставить работать. Но большая проблема в том, то в биосе Супермикро (да и любой другой мастери, что уж) есть много мало понятных параметров вида «XXX: Enabled/Disabled», а описание этих параметров в мануле вот такое «Эта настройка включает/выключает XXX» (спасибо, кэп, а то ятак-то не понял). А вот что такое этот XXX хрен где найдёшь.
Я намедни новый сервак на Супермикро поднимал. Крутнул в биосе один такой вот параметр без описания, который, как мне казалось, отвечает всего лишь за энергосбережение на процессоре. Так после этого винда виснуть начала при попытке включения HVCI. Так что на боевом сервере я бы поостерёгся такие эксперименты проводить. Если сервер еще не в работе, то можно покрутить конечно.
«не, на броадкомах как раз не собирал. Нам надо как раз на Intel.»
Ну собрал же, работает как надо. Чего переживать-то?
«ну както странно»
Заметь, что в расшифровке нет даже варианта такого — «NotSupported». Т.е. похоже, что это банально не поддерживается сетевым адаптером. Если интересно надо поискать даташит на адаптер и посмотреть там. У Интела такая инфа точно есть на ark.intel.com. Насчет Броадкома не уверен, что найти получится.
вот тут хз. Энергосберегайки и всякое прочее по дефолту. только всевозможные виртуализации включил — SVM и SR-IOV. параметров типа IOMMU и ASPM вообще не нашёл. Но мне кажется еслиб дело было в них, врядли бы и на Intel заработало, однако там вроде работает.
откопал даташит по бродкому, написано SR-IOV with up to 128 VFs. тоесть вроде поддерживается.
да вот мало ли потом понадобится вдруг и на бродкомах сделать SR-IOV, а он не может. печально.
Ввёл просто Get-NetAdapter — где у вас NoVfBarSpace у меня показывает просто NotSupported, однако NumVFs показывает как в даташите — 128.
Get-NetAdapterSriov
Name : LAN3(BACKUP)
InterfaceDescription : Intel(R) Ethernet Server Adapter X520-2
Enabled : True
SriovSupport : Supported
SwitchName : DefaultSwitchName
NumVFs : 62
Name : LAN1(MAIN)
InterfaceDescription : Intel(R) Ethernet Server Adapter X520-2 #2
Enabled : True
SriovSupport : Supported
SwitchName :
NumVFs : 62
Name : LAN2(GUEST)
InterfaceDescription : Supermicro 10GBASE-T Ethernet Controller #2
Enabled : True
SriovSupport : NotSupported
SwitchName : Default Switch
NumVFs : 128
Name : WAN(INTERNET)
InterfaceDescription : Supermicro 10GBASE-T Ethernet Controller
Enabled : True
SriovSupport : NotSupported
SwitchName : Default Switch
NumVFs : 128
Заметки админа
Эту статью я публикую с целью лишь познакомить читателя с самим фактом существования технологии SR-IOV, а не с тонкостями настройки Hyper-V или сетевых адаптеров. Я сам впервые столкнулся с ней, и потратил много времени, чтобы понять, что к чему, такого очень краткого ликбеза мне не хватало.
В связи с запуском новых серверов и переходом на 10 Гбит/с. решил поразбираться с SR-IOV. После прочтения пачки статей сложилось поверхностное понимание того, что это и как им пользоваться. И почему после установки галочки «Включить SR-IOV» в свойствах сетевого адаптера ВМ в Hyper-V магии не случается. Сразу отмечу, что пытаться запустить ее на 1Гбит/с. нет смысла. Не все адаптеры это поддерживают, да и толку будет мало.
Каждое устройство SR-IOV имеет набор PF и VF: Physical Features и Virtual Features. И по идее можно выделять эти функции разным ВМ, но в моем тестовом случае я и близко не подобрался к лимиту в 128 VF моего сетевого адаптера. В Hyper-V поддержка технологии реализована так, что в случае, если использовать аппаратную разгрузку не получается, сетевой трафик будет обрабатываться обычным способом, т.е. софтово. При этом по заверениям разработчиков потери пакетов при переключении не произойдет.
Я пробовал все на сетевых адаптерах Intel X722, поэтому буду приводить последовательность на их примере. Но для других сетевых адаптеров все будет, скорее всего, более-менее аналогично.
PCIe SR-IOV
Назначение параметра: Параметр, управляющий функцией SR-IOV (Single Root Input/Output Virtualization — однокорневая виртуализация ввода/вывода). SR-IOV — функция, обеспечивающая совместное использование виртуальными машинами одной физической шины PCIe и аппаратный контроль этого использования, что обеспечивает быструю скорость операций ввода/вывода, чем при программной виртуализации, обеспечиваемой одним лишь гипервизором.
Возможные варианты значений:
Disable — функция отключена
Enable — функция включена
Per IIO Port — SR-IOV включена для каждого порта индивидуально