Bagaimana cara efisien menggunakan 3D melalui koneksi jarak jauh?

11

Saya memiliki satu PC (klien) yang lemah tetapi dengan kinerja 3D yang dapat diterima, dan satu PC (server) yang kuat yang harus mampu menjalankan aplikasi menggunakan OpenGL dua kali, yaitu sekali secara lokal dan sekali jarak jauh untuk klien. Saat ini, saya ssh -Xke dalamnya, tetapi konsol keluaran klien menyatakan rendering perangkat lunak digunakan dan saya hanya mendapatkan 3 frame per detik (fps). Sebenarnya, enkripsi ssh tidak diperlukan karena ini ada di LAN, tapi itu yang sudah saya ketahui untuk aplikasi jarak jauh ...

Jadi, bagaimana kinerja klien dapat ditingkatkan? Ide saya adalah

  • menggunakan akselerasi perangkat keras, tetapi server atau klien dan bagaimana?
  • gunakan sesuatu yang berbeda dari ssh

Saya tahu, dalam resolusi penuh dan tanpa kompresi canggih, LAN 100 Mbit / s tidak akan menghasilkan lebih banyak fps, tetapi ini adalah aplikasi berjendela ca. 800x450, jadi secara teoritis hingga 12 fps (pada 24 bit / piksel) harus dimungkinkan menggunakan data grafis yang tidak terkompresi. Dan mungkin sesuatu yang lebih baik dimungkinkan menggunakan GPU klien sendiri atau kompresi pintar.

-

sunting Ternyata apa yang saya inginkan pada dasarnya adalah versi lokal dari apa yang ditawarkan misalnya onlive dan gaikai . Apakah ada yang seperti ini untuk Linux (dan mungkin gratis)?

-

edit2 VirtualGL tampak seperti solusi terbaik (meskipun saat ini tidak bekerja untuk saya), tapi saya ingin tahu apakah mungkin untuk melakukan hardware render pada klien, juga

Tobias Kienzler
sumber
Tindak lanjut karena PC bersebelahan satu sama lain dan saya bertanya-tanya mengapa tidak menggunakan satu PC untuk dua pengguna: Dapatkah satu PC digunakan oleh dua pengguna secara bersamaan melalui dual-monitor?
Tobias Kienzler

Jawaban:

6

Anda dapat memeriksa VirtualGL bersama dengan TurboVNC yang seharusnya memberi Anda 20fps @ 1280x1024 pada 100 Mbit ( lihat wikipedia ).

Perhatikan bahwa ini mungkin tidak bekerja dengan semua aplikasi, itu tergantung pada bagaimana mereka menggunakan OpenGL.

Gert
sumber
Beri +1 suara ini persis seperti yang saya cari, terima kasih! (Saya akan menerima jawabannya setelah (semoga) pengujian berhasil)
Tobias Kienzler
aww, Radeon saya sepertinya tidak mendukung pbuffer yang diperlukan :(
Tobias Kienzler
Saya memiliki PC baru sekarang yang mendukung pbuffer, tetapi sayangnya vglrun segfaults sekarang. Mungkinkah ini karena server berjalan pada 64 bit saat klien pada 32 bit?
Tobias Kienzler
(diterima karena jawabannya benar dan segfault adalah pertanyaan terpisah)
Tobias Kienzler
1

Ini adalah pertanyaan lama tetapi masih relevan. Ada langkah demi langkah manual tentang cara mengkonfigurasi dan memecahkan masalah rendering aplikasi X11 3D pada perangkat keras lokal: Akselerasi perangkat keras OpenGL melalui koneksi remote x11 ssh

Gim Chromium BSU digunakan dalam artikel sebagai contoh. Ini berjalan dengan 5-8 FPS dengan rendering perangkat lunak standar melalui koneksi SSH, 30 FPS dengan rendering perangkat keras tidak langsung dan> 30 FPS dengan koneksi TCP X11 yang tidak terenkripsi. Perhatikan bahwa ini hanya berfungsi untuk beberapa aplikasi.

Ringkasan artikel yang singkat

Render tidak langsung dan koneksi TCP dinonaktifkan pada konfigurasi server X11 default. +iglx and -listen tcpparameter memungkinkannya. Ada juga LIBGL_ALWAYS_INDIRECT=1variabel yang memaksa render tidak langsung pada klien X11.

evpo
sumber
Terima kasih atas jawaban anda. Sangat dihargai untuk mencatat inti dari posting blog yang terhubung di sini jika link tersebut pernah mati meskipun (bahkan jika Anda misalnya hanya menyatakan "menggunakan lightdmdengan iglx" seperti itu). Saat ini saya tidak membutuhkan ini lagi, tetapi saya akan mencobanya lain kali;) Mungkin orang lain juga menganggap temuan Anda bermanfaat.
Tobias Kienzler
Poin yang bagus. Saya menambahkan detail utama artikel ini.
evpo
0

Itu mungkin benar jika Anda memiliki dua PC desktop. Tetapi jika Anda memiliki laptop WiFi tua yang dapat digunakan di mana saja di rumah (mis. Ti5600 dengan Ubuntu 10,04 sebagai klien Anda, dan PC desktop dengan papan GTX bersama dengan Wi-Fi Router cadangan, memiliki klien OpenGL jarak jauh sepertinya ide yang bagus.

Masalahnya adalah mendapatkan konteks OpenGL (sisi server) jarak jauh. Anda dapat menjalankan ssh -X pada klien Anda. Tetapi jika Anda menjalankan glxinfo pada sistem jarak jauh, Anda mendapatkan klien lokal Anda, yang mengembalikan Anda ke tempat Anda mulai. Anda dapat mengatur variabel lingkungan DISPLAY Anda ke host jarak jauh itu, dan Anda dapat menggunakan layar itu sebagai monitor kedua, yang masih tidak membantu.

Satu solusi lain adalah menulis aplikasi desktop Anda sehingga mereka dapat menggunakan konteks GLX jarak jauh:

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

Keith
sumber
Terima kasih. Jadi, apakah ada alternatif bagi protokol X untuk mengirimkan 3D? Maaf, saya harus memberi tanda kutip pada server dan klien, saya hanya bermaksud memiliki kata-kata yang lebih pendek untuk PC yang kuat dan lemah - kedua PC harus digunakan sebagai ujung depan pada saat yang sama seolah-olah mereka adalah PC desktop tetapi dengan semua pekerjaan CPU dan akses RAM dilakukan oleh PC yang lebih baik. PC yang lemah tidak memiliki daya CPU dan RAM yang cukup untuk menjalankan aplikasi itu sendiri
Tobias Kienzler
Bukannya aku sadar. Jenis 3D yang Anda pikirkan membutuhkan BANYAK bandwidth.
Keith
itu benar :( Otoh, OnLive , Gaikai dan lain-lain mengklaim ini bahkan mungkin untuk game melalui internet ...
Tobias Kienzler
Ok, saya melihatnya. Saya juga tidak berpikir mereka mengirimkan frame seperti itu. Mereka mengunduh dan menjalankan lokal, dan hanya mengontrol kontrol dan memperbarui informasi, sama seperti game online yang ada. Bahkan jika mereka melakukannya, itu harus resolusi rendah untuk kompresi tinggi.
Keith
Cara saya memahaminya, mereka menjalankan game dari jarak jauh dan hanya mentransmisikan aliran video HD saat menerima acara keyboard dan mouse. Tetapi tentu saja orang tidak dapat mengirimkan 30 fps dalam HD melalui internet tanpa kompresi apa pun ...
Tobias Kienzler