Tempo di avvio e prestazioni migliorati in Ubuntu 18.10 “Cosmic Cuttlefish” con LZ4 e Ztsd.

Ubuntu 18.10 ha dei miglioramenti per aumentare il tempo di avvio. Ubuntu 18.10 si avvia molto più velocemente delle precedenti versioni di Ubuntu.

Prendendo spunto da Fedora 28, Canonical (la casa madre di Ubuntu) ha lavorato anche molto bene per migliorare la durata della batteria dei portatili e altri PC che sono alimentati dalla batteria modificando il kernel Linux che offre una modalità di risparmio energetico per i controller HDD-USB e altri dispositivi. In passato, c’erano problemi causati da questa modalità.

Tuttavia, viene adottato un nuovo approccio per risolvere tali problemi per ottenere il meglio da ciò che la modalità a basso consumo può offrire senza causare problemi.

lz4

I nuovi algoritmi.

Lavorando con nuovi algoritmi di compressione come LZ4 e Ztsd, Ubuntu 18.10 dovrebbe avere un avvio più veloce del 10%.

Anche l’installazione sarà leggermente più veloce. Che è sicuramente una buona notizia per tutti gli utenti di Ubuntu.

LZ4 è un algoritmo di compressione focalizzato sulla velocità.

LZ4 è un algoritmo di compressione senza perdita di dati focalizzato sulla velocità di compressione e decompressione. Appartiene alla famiglia LZ77 di schemi di compressione orientati ai byte.

L’algoritmo fornisce un rapporto di compressione leggermente peggiore dell’algoritmo LZO , che a sua volta è peggiore di algoritmi come gzip . Tuttavia, le velocità di compressione sono simili a quelle di LZO e diverse volte più veloci rispetto a gzip, mentre le velocità di decompressione possono essere significativamente più veloci di LZO.

L’algoritmo LZ4 rappresenta i dati come una serie di sequenze. Ogni sequenza inizia con un token a un byte suddiviso in due campi a 4 bit. Il primo campo rappresenta il numero di byte letterali che devono essere copiati nell’output. Il secondo campo rappresenta il numero di byte da copiare dal buffer di output già decodificato (con 0 che rappresenta la lunghezza minima di corrispondenza di 4 byte).

Leggi anche:  Tizen il sistema operativo gratuito e open source per dispositivi mobili basato su Linux.

Un valore di 15 in uno dei campi bit indica che la lunghezza è maggiore e che è necessario aggiungere un byte di dati alla lunghezza.

Un valore di 255 in questi byte aggiuntivi indica che è necessario aggiungere un altro byte. Quindi le lunghezze arbitrarie sono rappresentate da una serie di byte aggiuntivi contenenti il ​​valore 255. La stringa di letterali viene dopo il token e tutti i byte aggiuntivi necessari per indicare la lunghezza della stringa.

Questo è seguito da un offset che indica quanto indietro nel buffer di output inizia a copiare. I byte aggiuntivi (se presenti) della lunghezza della corrispondenza arrivano alla fine della sequenza.

La compressione può essere eseguita in un flusso o in blocchi. Rapporti di compressione più elevati possono essere ottenuti investendo più sforzi nel trovare le migliori corrispondenze. Ciò si traduce in un output più piccolo e in una decompressione più veloce.

Implementazione.

L’implementazione di riferimento in C di Yann Collet è concessa in licenza con una licenza BSD. Ci sono porte e collegamenti in vari linguaggi come Java, C #, Python, ecc.

I database come Hadoop usano questo algoritmo per una compressione veloce. LZ4 è stato implementato anche in modo nativo nel kernel Linux 3.11

Le implementazioni FreeBSD, Illumos, ZFS su Linux e ZFS-OSX del filesystem ZFS supportano l’algoritmo LZ4 per la compressione al volo.

Linux supporta LZ4 per SquashFS dal 3.19 al rc1. LZ4 è implementato anche nel più nuovo archiviatore Zstd di Yann Collet.

Zstandard è un algoritmo di compressione in tempo reale che fornisce elevati rapporti di compressione

Zstandard è un algoritmo di compressione in tempo reale che fornisce elevati rapporti di compressione. Offre una gamma molto ampia di compromessi tra compressione e velocità, mentre è supportato da un decoder molto veloce (vedi benchmark sotto).

Leggi anche:  Firestarter personal firewall, la sicurezza su Linux.

Offre anche una modalità speciale per i dati di piccole dimensioni, chiamata compressione del dizionario , e può creare dizionari da qualsiasi set di campioni. La libreria Zstandard viene fornita come software open source utilizzando una licenza BSD.

La compressione di piccoli dati.

Ztsd-speed

I grafici precedenti forniscono risultati applicabili agli scenari di file e stream tipici (diversi MB). I piccoli dati hanno diverse prospettive.

Più piccola è la quantità di dati da comprimere, più difficile è comprimere. Questo problema è comune a tutti gli algoritmi di compressione, e la ragione è che gli algoritmi di compressione imparano dai dati passati come comprimere i dati futuri. Ma all’inizio di una nuova serie di dati, non esiste un “passato” su cui costruire.

Per risolvere questa situazione, Zstd offre una modalità di allenamento, che può essere utilizzata per mettere a punto l’algoritmo per un tipo selezionato di dati. Formazione Zstandard si ottiene fornendogli alcuni campioni (un file per campione). Il risultato di questo allenamento è memorizzato in un file chiamato “dizionario”, che deve essere caricato prima della compressione e della decompressione. Utilizzando questo dizionario, il rapporto di compressione ottenibile su dati piccoli migliora notevolmente.

Nell’esempio seguente viene utilizzato il set di esempi github-users, creato dall’API pubblica github. Consiste di circa 10.000 record di ponderazione di circa 1 KB ciascuno.

ZtsdZtsd-1Ztsd-2

Questi guadagni di compressione si ottengono mentre forniscono simultaneamente velocità di compressione e decompressione più veloci.

ALTRI ARTICOLI SU ARGOMENTI SIMILI

Leggi anche:  Come ricompilare il kernel Linux.
Precedente Akonadi è uno dei “pilastri” su cui si fonda il progetto KDE 4 Successivo Scarica Ubuntu 18.10 “Cosmic Cuttletfish” e derivate ufficiali: tutte pronte per il download.

Lascia un commento