X11 - Penerusan dan efisiensi

12

Saya memiliki aplikasi intensif grafis yang perlu diteruskan melalui X11. Saya menghabiskan waktu meneliti X11 dan efisiensinya, termasuk pos yang hebat ini: Mengapa penerusan X11 tidak efisien? .

Satu hal yang masih belum jelas bagi saya adalah apakah kinerja penerusan X11 tergantung pada aplikasi. Saya mendapat kesan bahwa seluruh layar diteruskan, apa pun yang terjadi. Maka penerusan X11 harus berupa aplikasi-agnostik.

Jadi, apakah ada informasi konkret tentang apa yang sebenarnya diteruskan dan apakah kinerja ssh -X tergantung pada aplikasi?

Fang
sumber
2
"Jadi, apakah ada informasi konkret tentang apa yang sebenarnya diteruskan dan apakah kinerja ssh -X tergantung pada aplikasi?" Iya. Sebagai permulaan, lihat ceramah Daniel Stone The Real Story Behind Wayland dan X dari LinuxConf.au 2013.
sampablokuper
1
"Saya mendapat kesan bahwa seluruh layar diteruskan" Sulit untuk memahami apa yang akan memberi Anda kesan itu, karena apa yang biasanya dilakukan orang-orang dengan penerusan SSH X adalah secara manual menjalankan aplikasi individual pada shell jarak jauh; dapatkah Anda menguraikan cara meluncurkan aplikasi?
rakslice
1
Satu faktor yang perlu diperhatikan jika Anda memindahkan sesi X melalui terowongan SSH: ssh dapat melakukan kompresi. Ini adalah -Copsi pada baris perintah atau Compression: yesopsi dalam file .ssh / config. Jika Anda melakukan penerusan X tradisional dari Dallas ke Australia melalui tautan T1 yang padat, ini bisa menjadi perbedaan antara memiliki tugas Anda untuk memunculkan dialog lima tingkat jauh di antarmuka dan memilih kotak centang dari tugas yang tidak realistis ke tugas yang sangat berlebihan. frustasi dua jam. Untungnya saya tidak perlu mencoba ini dengan Wayland, tetapi saya menganggap ini sangat meningkat.
Ed Grimm
Saya tidak ingin memulai diskusi yang luas dalam komentar, terutama karena pertanyaan saya telah dijawab dengan sangat baik oleh @grawity. Dengan "seluruh layar" maksud saya bahwa data yang diteruskan melalui terowongan ssh akan selalu menjadi deskripsi sederhana piksel di layar. @ EdGrimm: Terima kasih atas komentar Anda tentang kompresi. Saya sadar akan hal itu. Dalam skenario khusus kami, X11 diteruskan melalui LAN Link 10Gbit dan kompresi / tanpa kompresi tampaknya tidak membuat perbedaan sama sekali.
Fang

Jawaban:

29

Saya mendapat kesan bahwa seluruh layar diteruskan, apa pun yang terjadi. Maka penerusan X11 harus berupa aplikasi-agnostik.

Tidak, itu justru sebaliknya. Alasan penerusan X11 disebut "penerusan X11" adalah karena pengangkutan pesan protokol X yang sebenarnya digunakan oleh aplikasi untuk membuat windows mereka di "X server" (biasanya Xorg). Pesan-pesan itu adalah perintah untuk membuat / memindahkan jendela, menggambar teks dan primitif grafis (garis / persegi panjang), menggambar bitmap, dll.

Anda bisa mengatakan itu secara kebalikan dari protokol "gambar layar penuh" seperti VNC / RFB. Saya pikir ini agak sebanding dengan RDP Windows, yang juga dibuat untuk mengangkut perintah menggambar GDI.

Jadi alasan Anda melihat perbedaan antar program adalah:

  1. Mengutip posting yang Anda referensikan, awalnya sebagian besar program berbasis X bekerja seperti ini:

    Pada dasarnya X11 tidak mengirim layar ke komputer Anda, tetapi ia mengirim instruksi tampilan sehingga server-X pada komputer lokal Anda dapat membuat kembali layar pada sistem lokal Anda.

    Jadi ketika sebuah program ingin menunjukkan tombol, ia hanya mengirim beberapa perintah pendek - "menggambar persegi panjang", "menggambar teks", dan mungkin beberapa baris untuk membuatnya terlihat 3D.

  2. Seiring waktu ini berubah, program mulai melakukan rendering sendiri, dan banyak dari instruksi itu menjadi hanya "inilah bitmap yang sudah saya render, taruh ini di layar" - sangat cepat secara lokal, tetapi sangat lambat pada jaringan karena X11 kurang memiliki kompresi gambar.

    Ini berarti program yang dibangun menggunakan toolkit modern jauh lebih lambat di jaringan X11, bahkan jika itu sesuatu yang mendasar seperti font antialiased.

    (Sebaliknya, RDP telah beradaptasi dari waktu ke waktu dan mencakup berbagai bentuk kompresi gambar seperti JPEG dan bahkan H.264; Anda sering dapat melihat artefak kompresi saat gambar penuh sedang dimuat.)

  3. Untungnya, sebagian besar toolkit UI seperti GTK menerapkan pelacakan kerusakan sehingga hanya wilayah yang diperbarui yang dikirim kembali. Namun, beberapa program (seperti beberapa versi Firefox / Thunderbird), tidak mendukung ini dan meminta render lengkap seluruh jendela, meskipun belum benar-benar diperbarui.

    Itu perbedaan lain antara program - yang berperilaku baik masih cukup dapat digunakan melalui jaringan, tetapi yang bermasalah dapat menjenuhkan tautan 100 Mbps yang sama sekali tidak berguna.

pengguna1686
sumber
1
Saya ingat pernah mencoba mengatur server MythTV. Utilitas "setup" adalah aplikasi Qt dan membutuhkan beberapa menit untuk menampilkan setiap halaman konfigurasi, meskipun ada tautan ADSL yang wajar sebagai bottleneck (hampir 8 Mb / s). Pekerjaan beberapa menit membutuhkan waktu beberapa jam karena ini - akan jauh lebih mudah dengan UI Curses, atau bahkan aplikasi X11 yang berperilaku baik. Jika saya tahu berapa banyak masalah yang akan terjadi, saya harus menunggu satu atau dua minggu sampai saya di tempat dan menggunakan salah satu kotak front-end diskless untuk tampilan. Saya ingin server dan bekerja lebih cepat dari itu.
Toby Speight
1
Dalam membela "program-program kereta" tersebut orang harus menunjukkan bahwa ini adalah kesalahan dari ideologi toolkit X +, yang pada dasarnya membuatnya perlu bagi program-program kereta untuk menjadi kereta di tempat pertama. Anda akan berpikir bahwa suatu program hanya dapat memanggil API (yang mengirim perintah) untuk memiliki "jendela tampak normal", menu dan tombol di sini dan bilah gulir di sana, tetapi tidak. Anda, atau toolkit, harus melakukan semuanya dengan tangan. Aku benar-benar tidak ada penggemar MS dan bahkan kurang sehingga Apple, tapi mereka punya hal-hal yang benar sedangkan ekosistem X telah tersedot selama puluhan tahun, dan masih menyebalkan.
Damon
Saya tidak yakin apakah ada perbedaan. Apa yang membuat Windows 'UWP atau WinForms atau comctl32 lebih sedikit dari "toolkit" daripada GTK dan QT? Bukankah mereka juga melakukan semuanya "dengan tangan"?
user1686