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

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

Linux различает общий пул векторов MSI-X для VF одной PF и настройку количества векторов у отдельной VF. Сообщаемый общий пул после назначения остаётся постоянным; настройки и выделенные векторы читаются отдельно.

Также ищут: sriov_vf_total_msix · sriov_vf_msix_count

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

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

При подготовке нескольких VF важно вести назначения отдельно от общего значения. Ноль в разных атрибутах имеет разный смысл, а доступность записи зависит от драйвера физической функции.

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

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

  1. sriov_vf_total_msix относится к PF и содержит общее число векторов MSI-X, доступных для назначения всем связанным с ней VF.

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

  2. У поддерживающего эту возможность устройства sriov_vf_total_msix остаётся постоянным после назначения векторов MSI-X.

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_vf_total_msix, строки 446–451. Атрибут не описан как уменьшающийся счётчик свободного остатка.

  3. Если устройство не поддерживает эту возможность распределения векторов MSI-X, sriov_vf_total_msix равен нулю.

    Граница применимости: Linux v6.12; случай отсутствия у устройства поддержки этой возможности. ABI What: …/sriov_vf_total_msix, строки 449–451. Задано направление «нет поддержки → ноль»; обратная импликация не установлена. Вывод не переносится на отсутствие любых прерываний у устройства.

  4. sriov_vf_msix_count относится к отдельной VF. Положительное записанное число сообщается как Table Size в её возможности MSI-X.

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_vf_msix_count, строки 453–464. Это настройка таблицы, а не измерение использования прерываний приложением.

  5. Запись нуля в sriov_vf_msix_count восстанавливает значение по умолчанию для устройства.

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

  6. Отрицательные значения sriov_vf_msix_count недопустимы.

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

  7. sriov_vf_msix_count доступен для записи, если PF привязана к драйверу, который реализует sriov_set_msix_vec_count().

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/sriov_vf_msix_count, строки 468–469. Условие относится к драйверу PF при настройке её VF.

  8. Имена файлов в msi_irqs соответствуют выделенным устройству векторам прерываний. Значение файла показывает режим этого вектора — msi или msix.

    Граница применимости: Linux v6.12; при поддержке оборудованием и драйвером. ABI What: …/msi_irqs, строки 88–94; ABI What: …/msi_irqs/N, строки 96–101.

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

Не путать

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

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

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

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

  1. Свяжите значение общего пула с точной PF.
  2. Сохраните назначения VF отдельно от постоянного общего значения.
  3. Различайте ноль общего пула и команду восстановления настройки VF.
  4. Проверьте поддержку операции драйвером PF.
  5. Отделите Table Size от выделенных векторов в msi_irqs.
  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; дата тегирования задаёт редакцию. Страниц в оригинале нет.

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

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

Спасибо!

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