Виртуализация ввода-вывода · проверено по источникам

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

В Linux sriov_totalvfs сообщает поддерживаемый предел VF у физической функции, а sriov_numvfs — число включённых VF. Запись в sriov_numvfs управляет их включением и отключением по правилам интерфейса.

Также ищут: sriov_totalvfs · sriov_numvfs

Практический смысл

Почему это важно

Для плана с заданным числом VF нужны аппаратная возможность, предел используемого драйвера и текущее включение. Изменение количества начинают с проверки исходного состояния, чтобы запрошенный переход соответствовал ABI.

Доказательная часть

Что подтверждено

  1. sriov_totalvfs появляется у физического PCIe-устройства с поддержкой SR-IOV и сообщает максимальное число VF, которое может поддержать PF.

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_totalvfs, строки 289–298.

  2. sriov_totalvfs обычно соответствует TotalVFs аппаратной возможности, но драйвер вправе уменьшить сообщаемое значение при обнаружении устройства через pci_sriov_set_totalvfs().

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_totalvfs, строки 293–300.

  3. Чтение sriov_numvfs возвращает число виртуальных функций, включённых на данной PF.

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_numvfs, строки 302–310.

  4. Описанный порядок включения VF через sysfs — проверить нулевое sriov_numvfs, затем записать требуемое число, не превышающее sriov_totalvfs.

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. HOWTO § How can I enable SR-IOV capability, строки 43–51; ABI What: …/sriov_numvfs, строки 311–316. Это проверка допустимости перехода; результат работы драйвера и нагрузки оценивается отдельно.

  5. Запись нуля в sriov_numvfs отключает виртуальные функции выбранной PF.

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. HOWTO § SR-IOV API, строки 79–88; ABI What: …/sriov_numvfs, строки 316–321.

  6. В примере ABI запись 2 в sriov_numvfs возвращает ошибку, если текущее значение отличается и от 0, и от 2.

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_numvfs, строки 317–321. Сохранены исходное число и условия примера документа.

  7. Ядро проверяет допустимость sriov_numvfs; в примере ABI запись 10 при sriov_totalvfs=8 возвращает ошибку.

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_numvfs, строки 317–321.

Граница терминов

Не путать

SR-IOV: физическая и виртуальная функции PCIe

SR-IOV описывает возможность представить физическое устройство как несколько виртуальных. Число уже включённых VF сообщает sriov_numvfs; аппаратная возможность и включённое количество — разные сведения.

SR-IOV: привязка виртуальной функции к драйверу

Включение VF задаёт состав виртуальных устройств. Для их работы нужен драйвер; sriov_drivers_autoprobe управляет автоматической привязкой вновь включаемых VF. Количество функций и поведение привязки проверяются отдельно.

SR-IOV: распределение векторов MSI-X

Параметр nr_virtfn при включении SR-IOV считает виртуальные функции. sriov_vf_total_msix считает общий пул векторов прерываний для VF одной PF. Число устройств и ресурс прерываний имеют разные единицы учёта.

Перед спецификацией

Что проверить

  1. Прочитайте sriov_totalvfs и sriov_numvfs у одной PF.
  2. Зафиксируйте драйвер рядом с полученным пределом.
  3. Проверьте текущее включённое количество перед изменением.
  4. Сопоставьте запрошенное количество с сообщаемым пределом.
  5. Учитывайте отключение VF в согласованном плане работ.
  6. После разрешённой операции перечитайте состояние и сохраните её результат.
Открытые основания

Первоисточники

  • Официальная документация

    Linux PCI sysfs ABI — sysfs-bus-pci

    The Linux Kernel developers · Linux v6.12, тег от 17.11.2024; последний коммит файла 759ec2824289, committer 2024-09-06

    Полный ABI-текст: 574 строк. Скачан редактором и прочитан автором 11.09.2026. SHA-256 13a73b125e800a57c2ed352f49a85e03a6dfb41eb33d3d498beb9297b92e28d1. Авторская дата последнего коммита 2024-09-04; дата тегирования задаёт редакцию. Страниц в оригинале нет.

    Открыть первоисточник
  • Официальная документация

    PCI Express I/O Virtualization Howto

    The Linux Kernel developers · Linux v6.12, тег от 17.11.2024; последний коммит файла 4f23bd5d09af, committer 2022-07-11

    Полный RST: 171 строк. Скачан редактором и прочитан автором 11.09.2026. SHA-256 62669b332bd99190649597ecce75d7a50a75afdb32f352a3546d9195221475ee. Авторская дата последнего коммита 2022-06-07; дата тегирования задаёт редакцию. Страниц в оригинале нет.

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие