- Membandingkan Wayland dan X11 dengan merekam latensi input kursor pada lingkungan Fedora Workstation 41·GNOME 47 menggunakan slow motion 240 FPS
- Mencatat delay frame sebanyak 16 kali untuk Wayland dan 16 kali untuk X11, dengan menghitung dari frame saat mouse mulai bergerak hingga frame saat kursor terlihat di posisi baru
- GNOME X11 terukur rata-rata 4 frame·16,7 ms·2,4 refresh layar, sedangkan GNOME Wayland terukur rata-rata 5,5625 frame·23,2 ms·3,3 refresh layar
- Pada sistem tersebut, Wayland menunjukkan latensi kursor sekitar 6,5 ms lebih tinggi secara rata-rata dibanding X11, dan selisihnya hampir setara 1 kali refresh layar
- Hasil ini hanya menunjukkan perbedaan latensi kursor pada kombinasi GNOME/AMD, dan bukan bukti bahwa latensi input Wayland lebih tinggi pada game atau aplikasi grafis umum
Mengapa diukur
- Seorang pengguna Linux melakukan eksperimen untuk mendapatkan angka konkret alih-alih rasa subjektif, dipicu oleh tulisan Wayland Cursor Lag: Just give me a break already... yang membahas keluhan latensi input Wayland
- Ia secara umum puas menggunakan Wayland, tetapi kesan bahwa Wayland memiliki latensi kursor lebih besar dibanding X11 menjadi titik awal eksperimen
- Kamera ponsel 90 FPS pada tulisan sebelumnya dianggap tidak cukup untuk menilai selisih setingkat satu refresh layar, sehingga digunakan mode perekaman 240 FPS
Metode pengukuran
- Dengan kamera ponsel, layar, meja, kursor mouse, mouse, dan tangan direkam bersama sambil mouse berulang kali disentil dengan jari
- Setelah merekam 16 kali pada sesi GNOME Wayland, pengguna login ke sesi GNOME X11 dan merekam 16 kali dengan metode yang sama
- Video yang direkam dikonversi menjadi frame JPEG dengan perintah
ffmpeg -i <input file> %04d.jpg - Delay frame dihitung dengan kriteria berikut
- Perhitungan dimulai dari frame pertama tempat mouse terlihat bergerak
- Dihitung hingga frame pertama tempat kursor terlihat jelas bergerak di posisi baru
- Frame awal dan frame akhir sama-sama disertakan
- Misalnya, jika mouse bergerak pada frame 1045 dan kursor bergerak pada frame 1047, itu dicatat sebagai delay 3 frame
Lingkungan pengujian
- Hardware dan software eksperimen adalah sebagai berikut
- Distro: Fedora Workstation 41
- Versi GNOME: 47
- CPU: AMD Ryzen 9 5950X
- GPU: AMD Radeon RX 7900XT
- Monitor: Gigabyte M32U, 4K IPS, 144,99 Hz, tanpa scaling DPI
- Mouse: Logitech G502 Lightspeed
- Kamera: iPhone 15 Pro, slow motion 240 FPS
Keterbatasan pengukuran
- Bahkan 240 FPS pun menghasilkan kurang dari 2 frame kamera per refresh layar pada layar 144 Hz, sehingga muncul variasi acak
- Karena piksel tidak berubah seketika, ada frame ambigu ketika kursor mulai tampak sangat samar di posisi baru
- Meski kursor belum sepenuhnya terang, jika terlihat jelas di posisi baru, itu dihitung sebagai kursor telah bergerak
- Video iPhone memuat beberapa frame duplikat, dan penyebabnya tidak diketahui
- Frame duplikat dianggap sebagai waktu satu frame yang telah berlalu dan dihitung seperti frame normal
- Faktor-faktor ini menimbulkan ketidakpastian pada hasil, tetapi diperkirakan berlaku sama pada Wayland dan X11 serta akan teraverasi jika datanya cukup
- Kompositor Wayland selain GNOME dan driver GPU selain AMD tidak diuji, sehingga hasilnya bisa berbeda pada kombinasi lain
Hasil pengukuran
- Nilai 16 pengukuran GNOME X11 adalah
5, 4, 3, 4, 5, 4, 6, 5, 1, 4, 4, 4, 3, 4, 4, 4frame- Rata-rata: 4 frame
- Waktu latensi: 16,7 ms
- Refresh layar: 2,4 kali
- Nilai 16 pengukuran GNOME Wayland adalah
6, 5, 6, 5, 5, 6, 6, 4, 8, 6, 5, 5, 5, 6, 5, 6frame- Rata-rata: 5,5625 frame
- Waktu latensi: 23,2 ms
- Refresh layar: 3,3 kali
- Pada sistem ini, Wayland menunjukkan latensi kursor rata-rata sekitar 6,5 ms lebih tinggi dibanding X11
- Penulis tidak memiliki keahlian untuk menganalisis dengan benar apakah ini signifikan secara statistik, tetapi dari nilai pengukuran tampaknya ada perbedaan yang jelas dan konsisten
- Selisihnya hampir setara 1 kali refresh layar, dan tidak diketahui apakah itu kebetulan
Kesimpulan dan cakupan interpretasi
- Eksperimen ini menunjukkan bahwa pada hardware tertentu ada perbedaan latensi input antara X11 dan Wayland, dan besarnya bisa cukup terasa bagi sebagian pengguna
- Untuk memahami cakupan dan besarnya masalah dengan jelas, diperlukan pengujian tambahan pada hardware dan refresh rate layar yang lebih beragam
- Besar selisih dapat bervariasi tergantung faktor seperti kompositor yang digunakan dan refresh rate layar
- Eksperimen tambahan kemungkinan besar tidak akan dilakukan sendiri karena memakan banyak waktu
- Pengujian ini tidak menunjukkan bahwa Wayland secara umum memiliki latensi input lebih tinggi dibanding X11
- Khususnya, ini bukan bukti bahwa latensi input Wayland lebih tinggi pada game
- Ada kemungkinan latensi tambahan tersebut khusus untuk kursor
- Kursor dipahami diproses dengan cara yang sangat berbeda dari aplikasi grafis umum
- Apakah Wayland menunjukkan latensi input lebih tinggi dibanding X11 pada game memerlukan pengujian terpisah
1 komentar
Komentar Hacker News
Pendekatan yang bagus. Rasanya orang terlalu sering menebak-nebak hal yang sebenarnya bisa lebih diverifikasi secara eksperimental. Sejak mempelajari metode ilmiah, saya selalu tertarik pada gagasan “mari rancang eksperimennya”
Saya tidak tahu kenapa Wayland menambahkan latensi ekstra, tetapi sebagai orang yang berada di komunitas komputer pada masa X11 pertama kali muncul, saya bisa bilang bahwa sejak awal keluhan soal latensi tampilan tidak pernah berhenti. Baik respons kursor maupun scroll xterm, sama saja
Saat “workstation” muncul, ada juga yang memiliki hardware tampilan terpisah khusus untuk mouse, sebagai perangkat untuk mengurangi latensi merender mouse di dalam frame. Ada juga paten XOR yang terkenal buruk itu: https://patents.google.com/patent/US4197590
Berkat keluhan semacam ini, jalur kode dari input keyboard/mouse sampai tercermin di layar terus ditinjau agar bisa dibuat “lebih cepat, dengan latensi lebih rendah”. Wayland relatif “baru” dibanding X11 sehingga belum diuji selama itu, tetapi saya berharap orang-orang akan terus memperbaikinya
Plane dapat diperbarui atau dipindahkan posisinya tanpa menggambar ulang sisa layar. Gambar layar biasa berada di plane dasar, sedangkan pergerakan kursor lebih mirip melakukan commit posisi plane baru
Latensi input tambahan yang ditambahkan GNOME Mutter, server Wayland yang digunakan di sini, kemungkinan besar adalah masalah strategi timing sampling input dan commit. Tiap server punya strategi dan prioritas berbeda, sehingga muncul kelebihan dan kekurangan
Wayland adalah protokol, jadi tidak terlibat dalam proses penentuan posisi kursor umum. Karena itu, masalah ini sepenuhnya berada di ranah implementasi internal dan optimisasi display server. Di level protokol, yang terjadi hanya klien dapat menetapkan gambar kursor dan klien diberi tahu posisi kursor
Seingat saya, situasi mulai memburuk ketika glamour muncul di Xorg. Saat jalur rendering kursor tidak lagi aman dijalankan dari signal handler—dan kalau berbasis OpenGL, tentu saja memang begitu—latensinya makin buruk
Dulu, meski mesin Linux sedang thrashing, pointer mouse tetap responsif, dan itu menjadi indikator andal untuk menilai apakah kernel benar-benar hang atau tidak. Jika pointer tidak merespons cukup cepat, biasanya itu kasus di host IDE/PATA yang perlu mengaktifkan unmask irq dengan hdparm. Pointer yang tidak responsif di XFree86 adalah sinyal yang sangat berguna bahwa ada sesuatu yang salah atau konfigurasi keliru; saya merindukan masa itu
Saya paham ini keluhan terhadap software gratis, tetapi sudah terlalu lama kita dipaksa beralih ke sesuatu yang lebih buruk. Adopsi Wayland seharusnya dilakukan atas dasar bahwa ia nyaris secara universal lebih unggul untuk semua kebutuhan input dan display
Intel, AMD, Nvidia, para produsen Arm harus habis-habisan membentuk konsorsium demi desktop Linux yang layak pakai. Pemerintah juga demikian. Karena desktop Linux yang aman sebenarnya mungkin, dan itu adalah jalur tercepat untuk memamerkan kemampuan CPU, 3D, serta hardware vektor/komputasi kelas atas
Wayland muncul pada masa Windows sedang mencoba merusak dirinya sendiri dengan UI tile yang mengerikan, dan Apple keras kepala menolak tambahan kapitalisasi pasar yang bisa didapat jika merilis macOS untuk x86 umum; pada akhirnya ia justru makin memperpanjang keterlambatan desktop Linux
Yang membutuhkan trik adalah saat menyeret jendela atau ikon; pada saat itu latensi swapchain mulai terlihat. Sebagian compositor jendela menganggap latensi tidak terlalu tampak berkat refresh rate tinggi dan tidak lagi memedulikannya, misalnya macOS; sementara Windows tampaknya beralih ke kursor mouse software saat drag berlangsung
Aplikasi fullscreen seharusnya melewati jalur cepat, baik melalui compositor maupun dengan mem-bypass-nya
Jika menggunakan ffmpeg untuk analisis per-frame seperti ini, Anda bisa mendapatkan waktu tampil tiap frame video dengan
ffmpeg -skip_frame nokey -i file -vsync 0 -frame_pts true out%d.png. Ini lebih akurat daripada sekadar mengekspor frame dan menghitung timestampDi browser web, hal serupa bisa dilakukan dengan memutar video lalu memakai
requestVideoFrameCallback(). Namun jika komputer tidak mampu mendekode semua frame dengan cukup cepat, mungkin perlu menurunkan.playbackRateFakta bahwa pada layar 144Hz Wayland rata-rata sekitar 6,5ms lebih lambat daripada X11, dan selisih itu hampir sama dengan satu kali refresh layar, mungkin bukan kebetulan. Jika latensinya hampir 1/144 detik, pada monitor 60Hz biasa bisa menjadi 1/60 detik. Sulit disadari secara sadar tanpa latihan, tetapi kebanyakan orang bisa “merasakannya” meski tidak dapat menjelaskannya
Tentu bagi banyak pengguna, polling rate mouse 125Hz juga menjadi faktor pengganggu, tetapi dalam kasus ini digunakan mouse 1KHz
Selisih 7ms tidak buruk, tetapi selisih 16,6ms mulai terasa cukup besar. Secara pribadi, menurut saya komputer seharusnya berupaya menargetkan latensi 1,6 frame: setengah frame fase acak, satu frame, dan sedikit waktu pemrosesan
Hasilnya akan berbeda tergantung compositor, GPU, dan pengaturan. Di X11, implementasi server X yang dipakai sistem desktop Linux pada praktiknya hanya satu, jadi perbedaan seperti ini lebih kecil
Masih mungkin ada masalah di banyak kombinasi compositor/GPU yang belum mendapatkan bidang kursor perangkat keras, dan jika demikian, perbedaan latensi seperti ini sangat mungkin terjadi
Baru tahu hari ini bahwa Wayland ternyata sudah berumur 16 tahun. Dalam beberapa tahun lagi umurnya akan sama dengan umur X ketika Wayland muncul, tetapi tampaknya masih dianggap biasa saja atau kalah dari X
$very_specific_feature” atau “sedih karena driver proprietary dari produsen kartu grafis saya belum cukup diuji di Wayland”Sekitar 99,999% keluhan semacam itu datang dari orang-orang yang 1) tidak mengerjakannya sendiri, 2) tidak punya minat atau kemampuan untuk mengerjakannya, dan 3) tidak memahami atau tidak mau mengakui bahwa pengembang Wayland dan X sebagian besar adalah orang yang sama, dan mereka tidak lagi ingin mengerjakan X11
Saya tidak punya kepentingan khusus dalam perdebatan ini, tetapi sudah lelah melihat orang mengeluhkan Wayland sambil memakai perangkat lunak yang diberikan gratis oleh orang lain. Kalau keluhan tentang Wayland sebanyak itu, seharusnya sekarang mereka sudah bisa berkumpul untuk memelihara dan meningkatkan X, lalu jika keluhan dan teorinya benar, meninggalkan Wayland di belakang
Anehnya, X itu open source dan bisa di-fork sesuka hati, dan meski ada contoh X.org yang lahir dari XFree86, para pendukungnya hanya membiarkannya berdebu dan tidak melakukan apa pun untuk pemeliharaan
Saya akan cukup tertarik melihat hasil berupa “Wayland tidak sebagus X, jadi kami membuat fork X modern yang bisa dipakai siapa saja”
Artinya, Wayland baru sekitar 66% dari umur X saat Wayland muncul, dan untuk mencapai umur yang sama, masih perlu tambahan 50% dari usia Wayland saat ini
Saat ini saya memakai Wayland di Plasma 6 dan berfungsi cukup baik, tetapi saya tidak punya kebutuhan khusus, jadi misalnya saya tidak tahu seberapa baik dukungan untuk screen reader
Pada titik itu, saya memperkirakan stack frontend browser akan sepenuhnya memakan desktop. Lagi pula, memang tidak banyak aplikasi desktop baru yang muncul di Linux
Upaya menulis ulang solusi yang sudah berfungsi dengan alasan “lebih modern, lebih mudah dipelihara, dan siap masa depan” biasanya memang tidak berakhir seperti itu, jadi tidak mengherankan. Umumnya menjadi lebih lambat, latensi meningkat, dan hanya ditopang oleh perangkat keras yang lebih cepat; bukan karena perangkat lunaknya menjadi lebih cepat
Rasanya setiap 20 tahun, generasi baru menjadi lebih lemah karena manja bergantung pada abstraksi yang dibuat generasi sebelumnya dengan kerja keras. Setelah kira-kira tiga generasi pengembang perangkat lunak, yang tersisa hanya pemanggil library/framework, dan hampir tidak ada orang yang benar-benar memahami performa dan optimisasi
Wayland memang masih kekurangan beberapa fitur dibanding X11, tetapi karena keunggulan lainnya, saya bersedia berkompromi soal itu
Banyak compositor Wayland punya masalah besar dengan keyboard, mouse, dan perangkat input lain. Ini karena spesifikasi dan implementasi referensi Wayland memutuskan untuk tidak mendukung hal-hal itu. Akibatnya setiap compositor Wayland memilih solusi yang berbeda-beda
Pilihan umum adalah libei dan libinput, tetapi input mouse/keyboard “lanjutan” sering kali sama sekali tidak didukung. weston adalah salah satu contohnya. Kita sama sekali tidak bisa tahu apakah perangkat lunak Linux tertentu akan berjalan di lingkungan Wayland tertentu, dan fragmentasinya parah
Di X, ada referensi X11 yang kuat yang benar-benar mengimplementasikan semuanya, sehingga jika sesuatu berjalan di satu tempat, kita bisa yakin itu juga berjalan di tempat lain
Bahkan setelah 12 tahun, belum ada satu pun compositor Wayland yang mendukung screen reader untuk tunanetra. Ini masih setingkat mainan
Jadi tidak bagus untuk gim, tidak bagus untuk pekerjaan grafis profesional, dan tidak bagus untuk orang dengan penglihatan kurang baik. Pada akhirnya, ini berarti umumnya tidak bagus untuk pengguna yang sedikit saja berbeda dari para pembuatnya
Namun kalau beruntung, mungkin ini mengurangi screen tearing yang belum pernah saya rasakan sendiri
Salah satu hasil keren dari sini adalah melihat orang menambahkan alur kerja aksesibilitas di atas ekosistem ini. Ada orang yang mengoperasikan seluruh desktop melalui tiling window manager dengan kontrol suara: https://youtu.be/fiPJLmhnnXM
Saat GPU menerima beban besar, misalnya ketika menjalankan inferensi Stable Diffusion, muncul lonjakan latensi yang besar. Memang belum pernah melakukan uji A/B dengan X11, tetapi dulu rasanya tidak pernah mengalami ini
Tambahan latensi sebesar satu frame saja sudah kurang bagus, tetapi lonjakan latensi yang sesekali muncul itu benar-benar menjengkelkan
Latensi input kursor adalah gangguan yang terus menggerogoti kepuasan terhadap aplikasi atau sistem operasi
Latensi kursor teks di IDE? Tidak bisa diterima
Latensi kursor teks di shell? Tidak bisa diterima
Latensi kursor mouse GUI? Tidak bisa diterima
Semuanya adalah alasan langsung untuk gugur
Bahkan System 1 yang berjalan lebih dari 40 tahun lalu di perangkat keras yang hampir tak terbayangkan lemahnya menempatkan responsivitas kursor sebagai prioritas tertinggi, mengungguli semua pesaing. Fondasi OS dan UI saat ini sudah 100% berbeda, tetapi prioritas itu tetap dipertahankan
Baru-baru ini saya mengalami perlambatan mouse yang parah pada kombinasi KDE/Plasma 6 X11 dan NVidia. Saya menyadari perlambatannya sangat terasa terutama di atas tab browser
Untuk orang lain yang mengalami masalah sama, solusinya adalah mematikan OpenGL flipping. Saya sama sekali tidak tahu apa fungsi OpenGL flipping, tetapi setelah dimatikan di nvidia-settings dan
/etc/X11/xorg.conf, masalahnya teratasiSaya ingin ada yang menjelaskan mengapa demikian, atau mengapa ini bukan nilai default
Kerja yang bagus. Sepertinya layak mengulang eksperimen dengan monitor disetel ke refresh rate yang sangat rendah, misalnya 30Hz
Jika Wayland selalu satu frame lebih lambat daripada X11, itu akan jauh lebih mudah diamati
Saya punya keluhan pribadi yang sedikit berbeda. Saat pertama mulai memakai Linux, desktop menggunakan compositing berbasis software. Mungkin CPU menggambar UI ke RAM lalu melakukan blit ke framebuffer GPU, dan saya kira itu memang cara yang sudah lama dipakai
Dengan compositor, termasuk X11 composite, lalu renderer GPU menjadi populer, latensinya menjadi mengerikan dan secara harfiah mencapai ratusan ms. Ini terasa aneh karena saat tumbuh dengan memainkan game DOS, masalah seperti ini tidak ada
Seiring waktu memang membaik, tetapi saya tidak yakin apakah kita sudah kembali ke masa keemasan rendering CPU