Мой хост работает в режиме SRIOV и имеет несколько физических устройств, которые отображаются на шине PCIe.Каждая физическая функция имеет коллекцию из 32 виртуальных функций.Я хочу поделиться одной из виртуальных функций с контейнером Docker.Это ускорители шифрования и сжатия, и я написал драйвер для одного из них;так что я знаком с SRIOV, когда я имею дело с гипервизорами «голый металл» или SRIOV, запускающими виртуальные машины.Но сейчас я пытаюсь получить доступ к виртуальным функциям внутри контейнера Docker.
На хосте я могу lspci и посмотреть свои физические и виртуальные устройства.Но когда я запускаю контейнер, все, что я вижу внутри контейнера, это физические функции.
Я видел параметр "--device" для "docker run", но я не думаю, что он будет работатьдля передачи виртуальной функции в контейнер.
С точки зрения логистики, вот что я вижу на хосте:
[localhost] config # lspci | grep "^85" | head -4
85:00.0 Co-processor: Intel Corporation DH895XCC Series QAT
85:01.0 Co-processor: Intel Corporation DH895XCC Series QAT Virtual Function
85:01.1 Co-processor: Intel Corporation DH895XCC Series QAT Virtual Function
85:01.2 Co-processor: Intel Corporation DH895XCC Series QAT Virtual Function
[localhost] config # lspci | grep "^85" | wc
33 295 2524
Итак, у нас есть 1 физическая функция на 85: 00.0 и 32 виртуальные.
Но когда я запускаю контейнер и делаю то же исследование изнутри контейнера, я вижу только следующее:
[localhost] config # lspci | grep QAT
04:00.0 Co-processor: Intel Corporation DH895XCC Series QAT
05:00.0 Co-processor: Intel Corporation DH895XCC Series QAT
85:00.0 Co-processor: Intel Corporation DH895XCC Series QAT
Мне сказали, что это можно сделать так:Я могу отправить виртуалы в контейнер, а мой водитель может сделать все остальное.
Мой вопрос: как передать виртуальные функции с хоста в контейнер?