hostprofi.ru
Подобрать хостинг
Термин·буква S

SR-IOV

краткое определение

SR-IOV (Single Root I/O Virtualization) — технология PCIe, позволяющая одному физическому устройству (сетевой карте или GPU) представиться как несколько виртуальных функций, каждая из которых передаётся виртуальной машине напрямую без гипервизора.

SR-IOV (Single Root I/O Virtualization) — спецификация PCI-SIG, стандартизированная в 2007 году, которая позволяет одному физическому PCIe-устройству предоставить несколько независимых виртуальных функций (Virtual Functions, VF). Каждая VF передаётся виртуальной машине напрямую через механизм PCI Passthrough, минуя программный стек гипервизора для обработки пакетов.

Как работает SR-IOV

Физическое устройство делится на: Physical Function (PF) — полнофункциональный PCIe-интерфейс, через который хост управляет устройством, и множество Virtual Functions (VF) — облегчённые функции с отдельными ресурсами (очереди, MAC-адреса, прерывания). IOMMU (Intel VT-d или AMD-Vi) изолирует VF так, что ВМ видит VF как собственное PCIe-устройство и работает с ним через нативный драйвер, а не виртуализованный.

Результат: сетевой трафик между ВМ и физической сетью проходит без участия гипервизора в пути данных. Это снижает задержку до 1–10 мкс против 30–100 мкс при программной виртуализации сети, а пропускная способность достигает линейной скорости карты (10/25/100 GbE).

Применение SR-IOV

SR-IOV используется для: высокопроизводительных сетевых нагрузок (HPC, финансовые трейдинговые системы, NFV — Network Functions Virtualization), bare-metal облака с гарантированным сетевым трофеем, GPU-виртуализации (NVIDIA vGPU использует SR-IOV), хранилищ данных с низкой задержкой. AWS Nitro System, на котором работает большинство EC2-инстансов с 2017 года, активно использует SR-IOV.

Ограничения SR-IOV

Не все сетевые карты поддерживают SR-IOV — нужна проверка списка совместимости. Максимальное число VF ограничено аппаратно (обычно 64–256 на PF). Live-миграция ВМ с SR-IOV невозможна без специальных решений (VF привязана к физическому железу). Настройка сложнее, чем программной виртуальной сети.

SR-IOV vs virtio

Virtio — паравиртуализированный драйвер ввода-вывода, стандартный в KVM. Virtio проще в настройке, поддерживает живую миграцию, но вносит задержку программного обработчика. SR-IOV даёт меньшую задержку и больший throughput, но привязывает ВМ к физическому оборудованию. В типичном хостинге используют virtio; SR-IOV применяется там, где задержка критична — финансы, HPC, NFV.

История

Спецификация SR-IOV принята PCI-SIG в 2007 году. Первые сетевые карты с поддержкой SR-IOV: Intel 82576 (2008), Mellanox ConnectX-2 (2008). В 2009–2010 годах поддержка SR-IOV появилась в ядре Linux. К 2012 году SR-IOV стал стандартом в серверных сетевых картах. NVIDIA использует SR-IOV в vGPU с 2015 года (архитектура Maxwell).

SR-IOV для GPU-виртуализации

NVIDIA представила SR-IOV для GPU в архитектуре Ada Lovelace (RTX 4000 серия, 2022) и Hopper (A100/H100 для дата-центров). До этого NVIDIA использовала собственную проприетарную схему NVIDIA vGPU, которая по сути эмулировала SR-IOV. С введением нативного SR-IOV в GPU открытые драйверы (NVIDIA Open Kernel Modules) получили поддержку виртуализации без GRID-лицензий.

Применение GPU SR-IOV: GPU-серверы для виртуальных рабочих столов (VDI), ML-инференс с разделённым GPU между несколькими арендаторами, виртуальные игровые серверы (cloud gaming).

Настройка SR-IOV в Linux

Включение VF на поддерживаемой NIC Intel X550: echo 4 > /sys/class/net/eth0/device/sriov_numvfs — создаёт 4 виртуальные функции. В KVM виртуальная функция передаётся ВМ как PCI-устройство через VFIO (Virtual Function I/O) драйвер. Для этого нужно: включить IOMMU в BIOS (Intel VT-d или AMD-Vi), загрузить ядро с параметрами intel_iommu=on, добавить VF в XML-конфигурацию домена через virsh. Proxmox VE поддерживает SR-IOV через PCIe passthrough в веб-интерфейсе.

Поддерживаемые сетевые карты и конфигурация

Сетевые карты с поддержкой SR-IOV: Intel X540, X550, XL710, XXV710, E810 серии; Mellanox ConnectX-3 Pro, ConnectX-4/5/6; Broadcom BCM57810/57840. Максимальное число VF: Intel X710 — 64 VF на PF, Mellanox ConnectX-5 — 128 VF. Проверить поддержку SR-IOV: lspci -v | grep -i "SR-IOV". В VMware ESXi SR-IOV настраивается в vCenter через Edit Settings → SR-IOV.

Для трейдинговых систем с требованием задержки менее 1 мкс SR-IOV с сетевой картой Mellanox и RDMA (Remote Direct Memory Access) позволяет передавать данные между серверами, минуя CPU полностью. Технология InfiniBand использует схожие принципы для HPC-кластеров.

Другие термины