Руководство по пробросу видеокарты для Mint 20.х в QEMU-KVM

Аватара пользователя

Автор темы
slant
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

Руководство по пробросу видеокарты для Mint 20.х в QEMU-KVM

#1

07 авг 2021, 16:50

Случайно наткнулся на материал, который выглядит так, как я хотел когда-то написать сам, но не осилил. :)

Сам лично, я строго по нему не делал, потому не могу дать гарантию что это 100% рабочая пошаговая инструкция. Но выглядит полностью созвучно со всем моим опытом в данном вопросе - т.е. должно работать. Принципиальных косяков я тут не вижу. Причем еще разжевано что для чего делается (в большинстве мест).

Потому, оставляю ссылку, как настоятельно рекомендуемую к прочтению по данному вопросу: https://noostyche.ru/blog/2021/02/11/qe ... ty-nvidia/

Тем более, это единственный попавшийся мне толковый материал на данную тему на русском языке.

Аватара пользователя

Автор темы
slant
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

Руководство по пробросу видеокарты для Mint 20.х в QEMU-KVM

#2

07 авг 2021, 19:11

Небольшое уточнение: по личному опыту, для карт GTX 950 и GTX 1650 не строго обязательны пункты с включением MSI и установкой драйвера в безопасном режиме. Во всяком случае таких последствий пропуск этих пунктов у меня не вызывал, так что это скорее ситуативно, и от железа зависит. А вот про обход Error 43 - это обязательно к исполнению, без этого даже начать установку драйвера не получится. Так же у карт серий GTX 16хх и новее не два, а 4 устройства которые нужно пробрасывать вместе.

Так же, в качестве гостя по этому рецепту можно использовать Win 8.1. (И линуксы, но это отдельный разговор.)
А вот Win7 - не пытайтесь зря. Не получится установить в режиме UEFI (Несовместимость с реализацией EFI в прошивке OVMF. Причем баг на стороне Win7 а не прошивки - нарушает стандарт).

Аватара пользователя

BadBird
Сообщения: 3070
Зарегистрирован: 09 сен 2016, 21:08
Решено: 5
Откуда: Грозный
Благодарил (а): 174 раза
Поблагодарили: 568 раз
Контактная информация:

Руководство по пробросу видеокарты для Mint 20.х в QEMU-KVM

#3

07 авг 2021, 19:23

Жаль, что у меня не апу и нет в мп поддержки двух вк....

Аватара пользователя

Автор темы
slant
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

Руководство по пробросу видеокарты для Mint 20.х в QEMU-KVM

#4

13 дек 2021, 21:10

Нашел интересный материал как дополнение, к сожалению уже на английском, но крайне ценный тем, что в нем описано динамическое переключение видеокарты. Т.е. при старте машины она у хоста, можно запускать игры или гонять CUDA и прочее, а при необходимости - отвязывается от хоста и подключается к виртуалке без перезагрузок. Это не отменяет необходимости иметь две видеокарты на хосте, но увеличивает гибкость всего сетапа на порядок.

https://github.com/bryansteiner/gpu-pas ... h-tutorial

Сам еще не тестировал (и не у всех заработает), но это законченный рецепт, а не разрозненные намеки, как в большинстве случаев.

Так же полезная ссылка (упоминается в предыдущем материале но на всякий случай): https://passthroughpo.st/simple-per-vm- ... ok-helper/
Скрипты для автоматизации задач при запуске и остановке VM. (Например чтобы автоматом частоту процессора на режим performance переключать при старте, но и для привязки видеокарты годится).

Аватара пользователя

Автор темы
slant
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

Руководство по пробросу видеокарты для Mint 20.х в QEMU-KVM

#5

28 мар 2022, 00:26

slant писал(а):
13 дек 2021, 21:10
Сам еще не тестировал (и не у всех заработает), но это законченный рецепт, а не разрозненные намеки, как в большинстве случаев.
Наконец провел эксперимент, и вполне успешно: по этой методике получилось динамически отвязать GeForce 1650 от vfio. У меня в общем-то задача стояла обратная обычной - мне нужно, чтобы карта была почти всегда привязана к vfio для qemu/kvm, но иногда - использовать ее для рендера в blender (cuda/OptiX) непосредственно на хосте. При этом не стоит задача перелючить на nvidia вывод иксов - нужен лишь чистый рендер в cuda. Так вот, результат используя эту инструкцию с двумя скриптами unbind_vfio.sh и bind_vfio.sh + kvm.conf: получается прекрасно. :) Но hook-и для автоматизации даже не ставил, переключаю вручную запуском скриптов лично.

Аватара пользователя

Автор темы
slant
Сообщения: 4504
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1992 раза
Контактная информация:

Руководство по пробросу видеокарты для Mint 20.х в QEMU-KVM

#6

04 май 2023, 14:33

После апгрейда до RTX 3060 выяснил 2 вещи:

- У нее опять 2 устройства для проброса, а не 4 - как у 1650.

- У этой карты (и по слухам - у остальных 3ххх тоже) есть специфическая особенность в прошивке. Если не загружен драйвер (или загружен vfio-pci) - карта работает в профиле энергопотребления P0 - максимальном, и не сбрасывает частоту ядра и памяти. Т.е. даже ничего не делая она тянет ~43Wt. Тогда как в полноценном idle на P8 она тянет лишь 12-13Wt. Чтобы решить эту проблему (а мои жаба с хомяком в один голос ругаются, что это именно проблема), нужно:

1. Освоить динамическое переключение драйвера как описано в руководстве из этого сообщения: Руководство по пробросу видеокарты для Mint 20.х в QEMU-KVM (Пост slant #120779). На самом деле ничего особо сложного - у меня заработало с полпинка и первого раза. :)
2. Добавить в автозагрузку для своего пользователя вызов переключения на nvidia. (чтобы постоянно был загружен именно он, а vfio-pci загружать только перед стартом VM). Но изначально для старта системы лучше оставить конфиг с vfio-pci - чтобы иксы не пытались на nvidia запускаться (а продолжали стартовать на второй отдельной карте). Т.к. динамическое переключение все равно требует переключаемую карту полностью освобождать от всех задач, в том числе и иксов.
3. В скрипт который делает переключение на драйвер nvidia добавить такую строчку: /usr/bin/nvidia-smi -pm 1 - это включит режим persistence и запретит драйверу выгружаться если для видеокарты нету никаких задач. А он будет выгружаться т.к. в подобном сетапе рабочий стол отрисовывает другая карта (у меня - intel-овское видео в процессоре), а 3060 можно использовать для всяких CUDA приложений - нейросеток, рендера из Blender и т.д. Причем здесь бонусом идет большее количество доступной VRAM и немного лучшая скорость, чем из под винды, или если обычная графика в хост-системе тоже на ней же (ресурсы ядер не заняты совсем).

P.S. Когда загружается виртуалка с виндой, управлением профилями питания карты занимается драйвер этой самой винды - т.к. vfio-pci это просто заглушка. И под виртуальной виндой idle тоже работает нормально, лишнего жора нет.

Ответить

Вернуться в «Руководства»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя