Совместное использование виртуальных функций PCIe на хосте с помощью док-контейнера - PullRequest
0 голосов
/ 30 мая 2018

Мой хост работает в режиме 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

Мне сказали, что это можно сделать так:Я могу отправить виртуалы в контейнер, а мой водитель может сделать все остальное.

Мой вопрос: как передать виртуальные функции с хоста в контейнер?

1 Ответ

0 голосов
/ 06 марта 2019

Как указано в комментарии (но с именем флага):

docker run -it --rm --cap-add=SYS_RAWIO ...

Затем попробуйте lspci изнутри контейнера.

...