Pigz
| Fiche express | |
|---|---|
| Domaine | Compression de fichiers |
| Commande | pigz
|
| Contexte | Remplaçant parallèle (multi-cœurs) de gzip, format 100% compatible |
| Voir aussi | Gzip (équivalent mono-thread) |
pigz (« parallel implementation of gzip ») est une implémentation parallèle de gzip qui exploite plusieurs cœurs CPU pour compresser un fichier. Le format produit reste strictement compatible avec gzip : un fichier .gz créé par pigz se décompresse avec gzip -d ou zcat, et inversement pigz peut décompresser n'importe quel .gz classique.
Intérêt
gzip classique est mono-thread : sur un serveur multi-cœurs, la compression d'un gros fichier (dump SQL, archive de logs, tarball) n'utilise qu'un seul cœur et peut devenir le goulot d'étranglement d'un script de sauvegarde. pigz découpe le flux en blocs compressés en parallèle sur tous les cœurs disponibles, ce qui réduit fortement le temps de compression sur des fichiers volumineux, au prix d'un usage CPU plus élevé (attendu, puisque c'est tout l'intérêt).
La décompression, elle, reste essentiellement mono-thread côté décodage (le format DEFLATE ne se parallélise pas nativement en lecture), pigz n'apporte donc un vrai gain que côté compression.
Installation
apt install pigz # Debian / Ubuntu
yum install pigz # RHEL / CentOS
dnf install pigz # Fedora / RHEL8+
Usage
pigz s'utilise comme un remplacement direct de gzip, avec les mêmes options principales :
pigz fichier.log # compresse -> fichier.log.gz (supprime l'original par défaut)
pigz -k fichier.log # compresse en gardant l'original (-keep)
pigz -d fichier.log.gz # décompresse (équivalent gzip -d)
pigz -9 fichier.log # compression maximale (plus lent, plus petit)
pigz -c fichier.log > fichier.log.gz # écrit sur stdout, ne touche pas l'original
Nombre de threads (-p)
Par défaut, pigz détecte automatiquement le nombre de cœurs disponibles et les utilise tous. L'option -p permet de forcer un nombre de threads précis, utile pour limiter la charge CPU sur un serveur partagé ou pour laisser du CPU disponible aux autres services pendant une sauvegarde :
pigz -p 4 gros_fichier.dump # limite à 4 threads
pigz -p 1 fichier.log # revient au comportement mono-thread de gzip
Combinaison avec tar
pigz s'intègre nativement à tar via l'option --use-compress-program, ce qui permet de créer ou d'extraire une archive .tar.gz en exploitant tous les cœurs disponibles :
tar --use-compress-program=pigz -cf archive.tar.gz repertoire/ # archive + compression parallèle
tar --use-compress-program=pigz -xf archive.tar.gz # extraction (décompression)
tar --use-compress-program="pigz -p 4" -cf archive.tar.gz repertoire/ # en limitant à 4 threads
C'est particulièrement utile pour accélérer les sauvegardes de gros répertoires ou de volumes de données sur des serveurs multi-cœurs, là où tar czf classique resterait bridé par le mono-thread de gzip.
Voir aussi
- Gzip — l'outil de compression standard, équivalent mono-thread