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

PCI passthrough

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

Технология, позволяющая передать физическое PCI/PCIe-устройство (GPU, NVMe-диск, сетевую карту) виртуальной машине напрямую, минуя гипервизор — гостевая ОС работает с железом как с настоящим, а не эмулированным устройством.

PCI passthrough (VFIO passthrough) — механизм, при котором физическое PCIe-устройство — видеокарта, NVMe-накопитель, сетевая карта (NIC) — передаётся виртуальной машине с прямым доступом без промежуточной эмуляции гипервизором. Гостевая ОС видит реальное устройство, использует его native драйверы и получает производительность, близкую к bare-metal. Это критически важно для GPU-вычислений (CUDA, ML-обучение) и хранилищ с требованиями к низкой задержке.

Как работает

PCI passthrough реализуется через технологию SR-IOV (Single Root I/O Virtualization) или VFIO (Virtual Function I/O). Требования: CPU с поддержкой Intel VT-d или AMD-Vi (IOMMU), включённый IOMMU в BIOS и ядре ОС (intel_iommu=on в параметрах ядра Linux), поддержка гипервизором (KVM, VMware ESXi, Hyper-V).

Процедура на Proxmox/KVM: устройство привязывается к драйверу vfio-pci (echo 0000:01:00.0 > /sys/bus/pci/devices/.../driver/unbind), после чего назначается виртуальной машине через командную строку qm или GUI. Гипервизор изолирует устройство через IOMMU-группы — группу устройств нельзя разбить, поэтому иногда требуется ACS Override Patch.

GPU passthrough — наиболее популярный сценарий. Используется для: ML/AI-обучения на GPU в виртуализированной среде (NVIDIA A100, H100), рендеринга в изолированных рабочих окружениях, игровых VM с реальной GPU производительностью (VFIO gaming). NVIDIA требует для passthrough GPU без потребительских ограничений — карты Tesla/Quadro/A-series или включение режима vGPU.

История

Технология IOMMU (Input-Output Memory Management Unit) разработана AMD (AMD IOMMU, 2006) и Intel (Intel VT-d, 2007). Первые реализации PCI passthrough для KVM появились около 2010 года. VFIO-драйвер появился в ядре Linux 3.6 (2012) и стал стандартным интерфейсом для passthrough. NVIDIA предоставила поддержку vGPU для виртуализации в 2017 году. В 2022 году NVIDIA сняла ограничение на использование GeForce в hypervisor (Turing+), открыв возможность passthrough без патчей.

Ограничения и сложности

  • Устройство на passthrough недоступно хостовой ОС — нельзя использовать GPU одновременно для хоста и VM.
  • IOMMU-группы: устройства в одной группе должны передаваться вместе (проблема при GPU + аудиоконтроллер в одной группе).
  • NVIDIA GeForce исторически блокировала работу в hypervisor — требовался патч. С 2022 года ограничение снято для Turing+.
  • Не все BIOS/UEFI поддерживают IOMMU даже на совместимых CPU.

На что обращать внимание

Для GPU-сервера с passthrough выбирайте CPU с Intel VT-d или AMD-Vi, материнскую плату с хорошей поддержкой IOMMU (серверные платформы — Supermicro, HPE, Dell PowerEdge — надёжнее consumer). Проверяйте группировку IOMMU устройств до покупки железа. При использовании в Proxmox: включите IOMMU в конфигурации GRUB и добавьте vfio vfio_iommu_type1 vfio_pci vfio_virqfd в /etc/modules.

Применение в GPU-серверах и хостинге

PCI passthrough востребован в двух основных сценариях: передача GPU виртуальной машине для машинного обучения и рендеринга, и передача NVMe-диска или сетевой карты напрямую в ВМ для максимальной I/O-производительности. GPU passthrough позволяет запустить Windows-игровую ВМ с нативной производительностью GPU рядом с Linux-хостом. Для задач ML в датацентрах используется SR-IOV — стандарт, позволяющий делить одну физическую карту между несколькими ВМ без потери производительности.

Типичные ошибки при настройке

Самая частая проблема — не отключенный IOMMU: без параметров ядра intel_iommu=on или amd_iommu=on passthrough не работает. Проверьте командой dmesg | grep -e DMAR -e IOMMU. Вторая ошибка — GPU в одной IOMMU-группе с другим устройством: для passthrough вся группа должна передаваться ВМ. Используйте ACS override patch для разделения групп.

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