Domenica, 05 Luglio 2020 16:09

HowTo: tar e compressione multi core

Lo spazio occupato nei nostri server e nei nostri PC è sempre maggiore.

Ne mondo *NIX per i backup tradizionalmente si usa tar e per comprimere i più noti programmi sono gzip e bzip2. Quello che si osserva con disorientamento è che al crescere dello spazio occupato e al crescere delle velocità e dei core dei processori e al ridursi dei tempi di I/O ai device (=hard disk) i tempi si creazione e compressione si sono ridotti di poco.

La causa numero uno è il calcolo: malgrado processori molti core i nostri programmi continuano a usare un solo core.

Qui di seguito una guida pratica per sfruttare un calcolo multi core con i programmi di compressione.

1. Premessa

Ipotizziamo l'impiego di un sistema CentOS/RedHat 7 o 8.

Il seguente esempio userà le versioni di gzip e bzip2 che sfruttano il multi core. Se non sono installate vanno messe nel nostro sistema come segue

yum install -y pbzip2 pigz

Esistono versioni che girano parallelamente in modalità multi core anche per altri compressori (es. xz vs pxz). Se si intende usare queste basterà installarle.

2. Causa

I programmi di default sono scritti per essere eseguiti su un solo core. Pertanto sfruttano la capacità di calcolo di un solo core.

3. Soluzione

Per sfruttare la capacità di tutti i core bisogna istanziare tar per usare un compressore multi-core. Anche nel caso di sola compressione va usata la versione multi-core del programma.

Nel caso di un tar compresso possiamo procedere come segue

tar --use-compress-program=pigz \
-cf out-tar-file.tgz \
source-dir

tar --use-compress-program=pbzip2 \
-cf out-tar-file.tar.bz2 \
source-dir

Nel caso di semplice compressione possiamo usare, al posto di gzip e bzip, le versioni multi-core come segue

pigz -r source-dir

NB: alcuni programmi (es. bzip2 e pbzip2) non supportano direttamente la compressione di una directory e del contenuto. Con questi programmi è necessario creare prima un file stripe come con tar esemplificato sopra.

Questo sito utilizza cookie, anche di terze parti, per migliorare la tua esperienza e offrire servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie. Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie vai alla sezione Cookie Policy.