LINUX.ORG.RU

Software QEMU GPU

 ,


0

1

Всем привет,

Подбираю решение для программного рендеринга видео в Qemu (на CPU). Имеется сервер с огромным количеством ядер, нужно максимально переложить видео на CPU. Существуют ли какие-то виртуальные карты кроме QXL+SPICE? При достаточной нагрузке (например видео) на одного клиента уже наблюдаются тормоза. В игры играть не планируется, это больше сервер тонких клиентов, поставить видеокарты в сервер нельзя. Рассматриваю сейчас проект Virgil3D, но так и не могу до конца разобраться, это действительно виртуальная 3D видеокарта или это типа ноды, которая «отъедает» кусочек от реальной видеокарты с хоста? Ну и хотелось бы услышать от экспертов, существуют ли какие-нибудь реализации программного OpenGl? Потому как при включении OpenGl, системе нужно указать видеокарту, тут проскочила мысль или использовать программный OpenGl или программную видеокарту и перенаправить запросы на нее.

Если надо рендерить на процессоре то достаточно просто запускать рендеринг на процессоре, зачем добавлять эмуляцию видеокарты через процессор? Ну и если у тебя дофига ядер то посмотри в сторону нумы и отключения гипертрединга, обычно это они являются источниками плохой производительности процессора в вм

no-dashi-v2 ★★★
()
Последнее исправление: no-dashi-v2 (всего исправлений: 1)
Ответ на: комментарий от no-dashi-v2

Я неправильно выразился, рендеринг не как таковой, а подключение OpenGl в QEMU, для отрисовки видео, загрузка некоторых приложений, которые подтормаживают, в общем это сервер тонких клиентов, но некоторые приложения тормозят при отрисовке. Вот не могу понять, без GPU можно ли использовать openGL в qemu?

somedev
() автор топика
Ответ на: комментарий от somedev

Вот не могу понять, без GPU можно ли использовать openGL в qemu?

Можно, если guest – линукс, opengl будет делать xorg-x11, но будет небыстро. Дело не в количестве ядер проца, оно все равно несопоставимо с количеством юнитов в видяхе.

Лет 12-15 назад я делал тонкий клиент, т.к. мощности ноута мне нехватало. Я тогда сделал так: подключался к серверу по xdmcp (соотв. 2d обсчитывалось локально), а virtualgl кидал до сервака с видяхой (соотв. 3d обсчитывалось там), но это требовало жирного канала.

Вот мои заметки по производительности того времени:

** GeForce GTX 960 (host) / virtio (guest)                                                                                                                                                          
                                                                                                                                                                                                    
eselect opengl xorg-x11                                                                                                                                                                             
    host ~1600 (glxinfo: direct yes)                                                                                                                                                                
    guest ~300 (glxinfo: direct yes)                                                                                                                                                                
    same computer:                                                                                                                                                                                  
        guest xdmcp ~200 (glxinfo: direct yes)                                                                                                                                                      
eselect opengl nvidia                                                                                                                                                                               
    host ~16200 (glxinfo: direct yes)                                                                                                                                                               
    guest ~1000 (glxinfo: direct yes)                                                                                                                                                               
    same computer:                                                                                                                                                                                  
        guest xdmcp ~900 (xorg-x11; glxinfo: direct no; GLX Error: no swrast, no picture in glxgears)                                                                                               
        guest xdmcp ~17000 (nvidia-drivers; eselect opengl nvidia; glxinfo: direct no;)                                                                                                             
    remote computer:
        guest xdmcp ~17000 (nvidia-drivers; eselect opengl nvidia; glxinfo: direct no;)

xorg
    host (intel i965), xdmcp remote guest (virtio) ~117 FPS, ~50 MiB ... (bare host ~1450 FPS) (qemu in window ~170 FPS)
soomrack ★★★★★
()
Ответ на: комментарий от einhander

Я понимаю, что может эта вся тема звучит и глупо, казалось бы - возьми квадро, да покрой всё, одной картой, но нет. Это по большей степени исследовательская работа.

Хорошо. https://wiki.archlinux.org/title/QEMU#Graphic_card

Вот QXL тут пишут: QXL is a paravirtual graphics driver with 2D support. С ним всё и так понятно, по сути самая мощная виртуальная карта, которую нашел.

А virtio-vga / virtio-gpu: is a paravirtual 3D graphics driver based on virgl. А вот тут я совсем запутался, короче, это тоже виртуальная карта в 3D или ей нужен /dev/dri ?

Собственно еще вопрос, можно ли вообще завернуть все эти расчеты видео на OpenSWR или LLVMpipe? Просто я не видел реальных кейсов, где вообще OpenSWR или LLVMpipe пробрасывали в виртуальную машину.

somedev
() автор топика
Ответ на: комментарий от somedev

Я покрыл свои потребности какой-то ati’шной картой, которая проброшена в виртуалку, а вторая похожая обслуживает хост и контейнеры.

рендеринга видео

Докопаюсь до терминологии, для рендеринга видео хватает ffmpeg на безголовом сервере, ему видеокарта не нужна.

Вообще тормоза отрисовки, например проигрывание видео фуллхд, при достаточном канале это копай в сторону замены spice, у меня на нем тормоза были. Вообще народ советует x2go и для 3д virtualgl в нем же. Мне больше подходит turbovnc, опять же если нужно 3д вместе с virtualgl.

einhander ★★★★★
()

Если в виртуалках винда - просто используй RDP. На виндовом терминальном сервере работающем внутри в виртуалки на линуксе без всяких пробросов видеокарт работают десятки юзеров. Если у тебя юзеры сидят в линуксовых виртуалках - то для тебя есть X11 и GLX extension, когда приложения запускаются на сервере и отображаются на клиентских X-терминалах используя для рендеринга ресурсы клиентов.

Ах да, надо правда упомянуть, что это «устарело», «сетевая прозрачность не нужна», «это небезопасно» и «современые производительные графические тулкиты» теперь по сети гоняют битмапы.

no-dashi-v2 ★★★
()
Ответ на: комментарий от somedev

virtio-vga / virtio-gpu: is a paravirtual 3D graphics driver based on virgl. А вот тут я совсем запутался, короче, это тоже виртуальная карта в 3D или ей нужен /dev/dri ?

оно умеет и в 2D, и это её режим работы по умолчанию, в зависимости от версии qemu 3D включается либо параметром gl=on для вывода (sdl,gtk) и адаптера , либо адаптер выбирается virtio-vga-gl (после qemu 6.1).

Еще оказывается есть забавный вывод egl-headless - с его помощью можно аппаратно ускорять линукс-гостя через virtio-gl, но смотреть на всё это удаленно через vnc сервер (добавить параметр -vnc :2 к примеру)

Ну а вообще вроде как можно до запуска qemu поставть переменную окружения LIBGL_ALWAYS_SOFTWARE=1 (на драйверах mesa3d) и через virtio-vga-gl поедет хостовый llvmpipe (у которого говорят многопоточность все равно не очень..)

Опять же, адро и меса в госте для такого проброса должны быть новые - ядро от 4.4+, меса не помню, но тоже после 2016-го.

Самое смешное что буквально сейчас пробовал Linux Mint 21 с меса 22.0.1 и там встроенная llvmpipe роняла десктоп, а с проброшенным virgl (r600) такого не было.

О сколько нам регрессий чудных готовит разработческий процесс …

Andrew-R ★★★★★
()
Ответ на: комментарий от no-dashi-v2

Ах да, надо правда упомянуть, что это «устарело», «сетевая прозрачность не нужна», «это небезопасно» и «современые производительные графические тулкиты» теперь по сети гоняют битмапы.

Оно ещё и поломано бывает. Только что пробовал x2go поднять с сеансом mate, так marco крашился, пришлось ставить openbox туда и да без virtualgl никакого 3д не было, а многое и не запускалось. Мне больше turbovnc понравился, в последней версии сделали наконец менеджер пользователей, теперь при конекте сразу нужный сервер поднимается, добавить проборс звука, так вообще отлично получается.

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)