giovedì 4 febbraio 2016

Perché Wayland è meglio di X11

Primo problema: il "window manager" è esterno al "server X11" (e i due devono comunicare tra loro): l'applicazione riempie di contenuto una finestra (inviando comandi di rendering al server); il server comunica le modifiche intervenute al "window manager", che comincia a lavorarci sopra...

Risultato: in alcuni casi, quando il Window Manager comanda di aggiornare il rendering a video, i frame escono sbagliati (verranno corretti al prossimo aggiornamento). E così, ridimensionando velocemente una finestra, restano pezzetti di "ombra" (perché è partita una richiesta parziale, aggiornata a diversi damage-events precedenti); pezzetti di "strisciate" della finesta, icone spostate, ecc. È un protocollo asincrono, per cui basterà aspettare che il compositor e il server abbiano finalmente modo di prendere fiato...

da una presentazione pdf

Secondo problema: il supporto delle caratteristiche legacy nate trent'anni fa, negli anni '80, quando il server X11 aveva a che fare con font esclusivamente bit-mapped, la scarsa memoria prevedeva un solo framebuffer video, e non c'erano tutte le considerazioni di sicurezza di oggi (per esempio un client grafico può leggere qualsiasi evento di input, diventando potenzialmente un keylogger). Per aggiungere un qualche supporto all'accelerazione grafica e alle uscite video, sul server X11 sono stati fatti pasticci immondi a suon di drivers e librerie.

La soluzione è Wayland:
  • compositor e server sono lo stesso processo, per cui zero-copy da uno all'altro, e ogni frame video viene disegnato alla perfezione
  • niente supporto di caratteristiche legacy che nessuno usa più
  • i client sono separati, anche al livello di input
  • tutto questo significa anche migliori performance e minor uso della memoria RAM.
Una installazione di Arch Linux con systemd e Wayland sul mio notebook, al termine del boot, col compositor Weston attivo su Wayland e una finestra di terminale nell'ambiente grafico e con rete wifi collegata, contava appena ventisei processi in esecuzione (e 96 mega di RAM occupati), contro i circa trecento processi e 400 megabyte di un comune Ubuntu con sessione X11 e Gnome.

1 commento:

  1. Il problema è che gente che usa WM come openbox o tiled come I3, dovrà aspettare assai prima di avere qualcosa di funzionale. Ho visto che c'è un equivalente di I3 per wayland chiamato Sway, ma gli mancano ancora un po'di funzioni.

    RispondiElimina