Как эффективно использовать 3D через удаленное соединение?

11

У меня есть один слабый ПК (клиент), но с приемлемой производительностью 3D, и один сильный ПК (сервер), который должен быть способен запускать приложение с использованием OpenGL дважды, то есть один раз локально и один раз для клиента. В настоящее время, я ssh -Xв это, но программный рендеринг состояния вывода клиентской консоли используется, и я получаю только 3 кадра в секунду (fps). На самом деле, ssh-шифрование не требуется, так как это в локальной сети, но это то, что я уже знаю для удаленных приложений ...

Итак, как можно повысить производительность клиента? Мои идеи

  • использовать аппаратное ускорение, но серверное или клиентское и как?
  • использовать что-то отличное от ssh

Я знаю, что в полном разрешении и без изощренного сжатия локальная сеть 100 Мбит / с не будет производить больше кадров в секунду, но это оконное приложение ca. 800x450, поэтому теоретически до 12 к / с (при 24 битах / пиксель) должно быть возможно использование несжатых графических данных. А может быть, что-то лучшее возможно с помощью собственного графического процессора клиента или некоторого умного сжатия.

-

редактировать Оказывается, что я хочу , это в основном локальная версия о том, что , например , OnLive и Gaikai предложений. Есть ли что-то подобное для Linux (и, возможно, бесплатно)?

-

edit2 VirtualGL выглядит как лучшее решение (хотя в настоящее время у меня не работает), но мне интересно, возможно ли сделать аппаратную визуализацию и на клиенте?

Тобиас Кинцлер
источник
Продолжение, так как ПК все равно находятся рядом друг с другом, и мне интересно, почему бы не использовать один ПК для двух пользователей: можно ли использовать один ПК двумя пользователями одновременно через два монитора?
Тобиас Кинцлер

Ответы:

6

Вы можете проверить, что VirtualGL вместе с TurboVNC предоставит вам 20fps @ 1280x1024 на 100 Мбит ( см. Википедию ).

Обратите внимание, что он может работать не со всеми приложениями, это зависит от того, как они используют OpenGL.

Герт
источник
+1 этот звук точно такой, как я ищу, спасибо! (Я приму ответ после (надеюсь) успешного тестирования)
Тобиас Кинцлер
Ой, мой Radeon, похоже, не поддерживает pbuffer, который требуется :(
Тобиас Кинцлер
У меня есть новый компьютер сейчас , который поддерживает пиксельный буфер, но , к сожалению vglrun ошибки сегментации в настоящее время. Может ли это быть из-за того, что сервер работает на 64 бит, а клиент на 32 бит?
Тобиас Кинцлер
(принято, потому что ответ правильный, а сегфо - это отдельный вопрос)
Тобиас Кинцлер,
1

Это старый вопрос, но он все еще актуален. Существует пошаговое руководство по настройке и устранению неполадок при визуализации X11 3D удаленного приложения на локальном оборудовании: аппаратное ускорение OpenGL через удаленное соединение x11 ssh

Игра Chromium BSU используется в статье в качестве примера. Он работает с 5-8 FPS с программным рендерингом по умолчанию через SSH-соединение, 30 FPS с косвенным аппаратным рендерингом и> 30 FPS с незашифрованным TCP-X11-соединением. Обратите внимание, что это работает только для некоторых приложений.

Краткое содержание статьи

Косвенный рендеринг и TCP-соединения отключены в конфигурации сервера X11 по умолчанию. +iglx and -listen tcpпараметры позволяют им. Существует также LIBGL_ALWAYS_INDIRECT=1переменная, которая вызывает косвенный рендеринг на клиенте X11.

EVPO
источник
Спасибо за Ваш ответ. С большой благодарностью стоит отметить суть связанных постов в блоге на тот случай, если ссылка когда-либо прекратится (даже если вы, например, просто заявили, что «используете lightdmс iglx» таким). Сейчас мне это больше не нужно, но я попробую в следующий раз;) Может быть, кто-то еще посчитает ваши выводы полезными.
Тобиас Кинцлер
Хорошая точка зрения. Я добавил основные детали статьи.
evpo
0

Это может быть правдой, если у вас есть два настольных ПК. Но если у вас есть старый WiFi-ноутбук, который можно использовать в любом месте дома (например, Ti5600 с Ubuntu 10.04 в качестве клиента, и настольный ПК с платой GTX вместе с запасным маршрутизатором Wi-Fi, наличие удаленного клиента OpenGL кажется хорошей идеей.

Проблема заключается в получении удаленного (на стороне сервера) контекста OpenGL. Вы можете запустить ssh -X на своем клиенте. Но если вы запустите glxinfo в удаленной системе, вы получите локальный клиент, который вернет вас туда, откуда вы начали. Вы можете установить переменную окружения DISPLAY для этого удаленного хоста, и вы можете использовать этот экран в качестве второго монитора, что по-прежнему не помогает.

Еще одно решение - написать ваши настольные приложения, чтобы они могли использовать удаленный контекст GLX:

http://arrayfire.com/remote-off-screen-rendering-with-opengl/

Кит
источник
Спасибо. Так есть ли альтернатива протоколу X для передачи 3D? Извините, я должен был поставить сервер и клиент в кавычки, я имел в виду только более короткие слова для сильного и слабого ПК - оба ПК должны использоваться в качестве внешнего интерфейса одновременно, как если бы они были настольными ПК, но со всей работой ЦП и доступ к оперативной памяти, сделанный лучшим ПК. У слабого ПК недостаточно мощности процессора и оперативной памяти для запуска самого приложения
Тобиас Кинцлер,
Не то, чтобы я в курсе. Вид 3D, о котором вы думаете, требует много пропускной способности.
Кит
это правда :( OTOH, Onlive , Gaikai и другие утверждают, что это даже возможно для игр через Интернет ...
Тобиас Кинцлер
Хорошо, я посмотрел. Я не думаю, что они также передают кадры таким образом. Они загружают и запускают локально, и только получают информацию об управлении и обновлении, точно так же, как существующие онлайн-игры. Даже если бы они это делали, для высокого сжатия было бы низкое разрешение.
Кит
Насколько я понимаю, они запускают игру удаленно и просто передают HD-видео, получая события клавиатуры и мыши. Но, конечно, невозможно передать 30 кадров в секунду в HD через Интернет без какого-либо сжатия ...
Тобиас Кинцлер