L’algoritmo di compressione LZO migliora la velocità di avvio degli snap

Una delle principali critiche mosse dagli utenti GNU/Linux al formato di pacchetti snap riguarda la lentezza che si ha al primo avvio delle applicazioni. Questo sta però per cambiare grazie all’utilizzo di un nuovo algoritmo di compressione.

La situazione attuale

Per impostazione predefinita, gli snap vengono impacchettati come filesystem squashfs in sola lettura e compressi mediante l’algoritmo XZ. Questo si traduce in un alto livello di compressione ma al contempo richiede più potenza di elaborazione per decomprimere ed espandere il filesystem prima di usare l’applicazione.

La conseguenza, per gli utenti desktop, è che il primo avvio dell’applicazione risulta molto lento (a volte tremendamente lento). I successivi avvii dell’applicazione sono veloci e, in genere, c’è poca o nessuna differenza rispetto alle applicazione installate mediante formati pacchetto tradizionali. Questo perché una volta estratto il filesystem questo resta memorizzato nella cache.

Come migliorerà

Per migliorare i tempi di avvio il team di Ubuntu ha deciso di testare un algoritmo diverso per la compressione. L’algoritmo scelto è LZO in quanto offre una minore compressione ma al contempo richiede una minore potenza di elaborazione per completare l’operazione di decompressione.

Cosa dicono i test

Come caso di studio il team di Ubuntu ha deciso di testare il browser web Chromium (build stabile, 85.x). La scelta è ricaduta su Chromium in quanto è una applicazione di uso frequente e relativamente ampia e complessa. 

Per confronto, lo snap compresso con il vecchio algoritmo XZ pesa ~ 150 MB, mentre quello che utilizza la compressione LZO ha una dimensione di ~ 250 MB.

Gli sviluppatori hanno deciso di condurre il test su diversi sistemi (modelli di laptop 2015-2020), inclusi modelli con HDD, SSD e archiviazione NVMe, grafica Intel e Nvidia, nonché diversi sistemi operativi, tra cui Kubuntu 18.04, Ubuntu 20.04 LTS, Ubuntu 20.10 e Fedora 32 Workstation.

Su ciascuno dei sistemi selezionati, il team di Ubuntu ha esaminato il tempo necessario per avviare e visualizzare la finestra del browser per:

  • Pacchetto nativo (DEB o RPM) dove disponibile (Kubuntu 18.04 e Fedora 32)
  • Snap con compressione XZ (tutti i sistemi)
  • Snap con compressione LZO (tutti i sistemi)

I risultati sono stati confrontati nel seguente modo:

  • Avvio a freddo: non sono presenti dati memorizzati nella cache
  • Avvio a caldo: i dati del browser vengono memorizzati nella cache

Risultati

Gli sviluppatori hanno misurato il tempo di avvio di Chromium con un nuovo profilo non utilizzato.

Chromium startup timeNative package (DEB/RPM)
Cold/hot (s)
Snap with XZ compression
Cold/hot (s)
Snap with LZO compression
Cold/hot (s)
System 11.7/0.68.1/0.73.1/0.6
System 2NA18.4/1.211.1/1.2
System 315.3/1.334.9/1.110.1/1.3
System 4NA10.5/1.42.6/0.9

I risultati nella tabella sono valori medi su più analisi. La deviazione standard è ~ 0,7 secondi per le partenze a freddo e ~ 0,1 secondi per le partenze a caldo.

L’uso della compressione LZO offre miglioramenti all’avvio a freddo del 40-74% rispetto alla compressione XZ.

Su Kubuntu 18.04, che ha ancora Chromium disponibile come pacchetto DEB, lo snap compresso con LZO ora offre prestazioni di avvio quasi identiche.

Su Fedora 32 Workstation, l’ avvio a freddo dello snap con compressione LZO è più veloce del pacchetto RPM di un 33% (differenza effettiva di ~ 5,0 secondi).

L’avvio a caldo è indipendente dal formato di pacchetti utilizzato.


Source: L’algoritmo di compressione LZO migliora la velocità di avvio degli snap