Compresser en multithreading sous Linux (gzip pigz, bzip2 lbzip2)
Table des matières
De nos jours, la plupart des ordinateurs, qu'ils soient fixes ou portables ou même serveurs, ils possèdent un processeur avec plusieurs cœurs.
<div class="formatter-container formatter-blockquote"><span class="formatter-title title-perso">Wikipedia :</span><div class="formatter-content">Un processeur est dit multithread s'il est capable d'exécuter efficacement plusieurs threads simultanément.
Un thread ou fil (d'exécution) ou tâche est similaire à un processus car tous deux représentent l'exécution d'un ensemble d'instructions du langage machine d'un processeur. Du point de vue de l'utilisateur, ces exécutions semblent se dérouler en parallèle. Toutefois, là où chaque processus possède sa propre mémoire virtuelle, les threads d'un même processus se partagent sa mémoire virtuelle. Par contre, tous les threads possèdent leur propre pile d’appel.</div></div>
Le logiciel tar étant un logiciel d'archive, il ne compresse pas s'il n'est pas couplé à gzip, bzip2 ou lzma (xz).
Qu'il ne soit pas multithread n'est pas gênant en soi, puisqu'il n'y a pas besoin de "calculer".
En revanche, lorsqu'on exécute
on compresse avec gzip. Le processeur travaille donc. Mais ... avec un seul cœur.
Si nous possédons un Intel Core i7, avec 8 cœurs donc, un sel sera utilisé.
Et si on utilisait les 8 pour aller ... 8 fois plus vite ?
Il existe 3 algorithmes de compression sous GNU/Linux.
On peut utiliser ces 3 algorithmes avec tar pour compresser en plus d'archiver.
gzip compresse rapidement mais faiblement.
bzip2 compresse plus que gzip, mais est un peu plus long.
lzma2 compresse plus que bzip2 mais est plus long que celui-ci.
Introduction
De nos jours, la plupart des ordinateurs, qu'ils soient fixes ou portables ou même serveurs, ils possèdent un processeur avec plusieurs cœurs.
<div class="formatter-container formatter-blockquote"><span class="formatter-title title-perso">Wikipedia :</span><div class="formatter-content">Un processeur est dit multithread s'il est capable d'exécuter efficacement plusieurs threads simultanément.
Un thread ou fil (d'exécution) ou tâche est similaire à un processus car tous deux représentent l'exécution d'un ensemble d'instructions du langage machine d'un processeur. Du point de vue de l'utilisateur, ces exécutions semblent se dérouler en parallèle. Toutefois, là où chaque processus possède sa propre mémoire virtuelle, les threads d'un même processus se partagent sa mémoire virtuelle. Par contre, tous les threads possèdent leur propre pile d’appel.</div></div>
Le logiciel tar étant un logiciel d'archive, il ne compresse pas s'il n'est pas couplé à gzip, bzip2 ou lzma (xz).
Qu'il ne soit pas multithread n'est pas gênant en soi, puisqu'il n'y a pas besoin de "calculer".
En revanche, lorsqu'on exécute
Code BASH :
tar -czf archive.tar.gz fichier
on compresse avec gzip. Le processeur travaille donc. Mais ... avec un seul cœur.
Si nous possédons un Intel Core i7, avec 8 cœurs donc, un sel sera utilisé.
Et si on utilisait les 8 pour aller ... 8 fois plus vite ?
Rapide tour des outils de compression
Il existe 3 algorithmes de compression sous GNU/Linux.
- gzip : qui a été créé à partir de 1991 pour remplacer le programme compress d'Unix
- bzip2 : qui est à la fois le nom d'un algorithme de compression de données et d'un logiciel libre développé par Julian Seward entre 1996 et 2000 qui l'implémente
- LZMA : qui est un algorithme de compression de données sans perte en développement jusqu'à 2001. Il est utilisé en version 2 (LZMA2) avec l'outil xz.
On peut utiliser ces 3 algorithmes avec tar pour compresser en plus d'archiver.
gzip compresse rapidement mais faiblement.
bzip2 compresse plus que gzip, mais est un peu plus long.
lzma2 compresse plus que bzip2 mais est plus long que celui-ci.
gzip | bzip2 | lzma | |
---|---|---|---|
Compresser | tar czvf achrive.tar.gz fichier1 fichier2 | tar cjvf achrive.tar.bz2 fichier1 fichier2 | tar cJvf achrive.tar.xz fichier1 fichier2 |
Décompresser | tar xzvf achrive.tar.gz | tar xjvf achrive.tar.bz2 | tar xJvf achrive.tar.xz |