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:
(get-vmhost).IovSupport
(get-vmhost).IovSupportReasons
Если ваш сервер поддерживает эту функцию, то в поле 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.