Crédits image
Si vous êtes comme moi et que vous avez l’habitude de classer vos fichiers dans des archives compressés, vous êtes sans doute sensibles aux capacités des différents algorithmes de compression et bien entendu, vous aimez que ce soit rapide. Si vous tournez sous GNU/Linux vous utilisez certainement des formats comme TAR, Gzip, Bzip2 ou encore 7z qui sont très bien. Il existe cependant un autre format peu connu des utilisateurs qui se nomme pigz et qui a la particularité d’utiliser automatiquement l’ensemble des cœurs disponibles dans votre processeur.
C’est assez sympa car même si nous sommes déjà en 2013, les logiciels courants de compression ne tirent pas toujours profit (pour ne pas dire jamais) des architectures multi-cœurs de nos processeurs et n’utilisent donc pas le Multithreading. Si vous manipulez beaucoup de fichiers compressés vous ne perdez donc rien à essayer Pigz, d’autant plus que les différents bench que j’ai pu voir sur le sujet ont l’air de noter un réel gain de performance.
Si ça vous tente sachez que Pigz (qui vous l’avez remarqué n’est pas un petit cochon) est disponible dans les dépôts des principales distributions GNU/Linux. Vous pouvez par exemple l’installer sur Debian, Ubuntu et dérivés à l’aide d’un simple :
sudo apt-get install pigz
Si vous ne le trouvez pas dans vos dépôts vous pouvez toujours vous procurer les sources en cliquant sur ce lien (site officiel).
Pigz s’utilisant en ligne de commande vous pouvez lancer un petit « man pigz » ou « pigz –help » pour prendre connaissance des options de base.
Si vous voulez en savoir encore plus sur le sujet, je vous conseille également de jeter un œil à cet article qui date un peu, mais qui est très intéressant. Je n’ai pas eu le temps de faire mon propre bench (fin de semaine chargée) alors si vous testez n’hésitez pas à nous faire un petit retour ;)
Source memo-linux.com
Supporte t il 7zip en native ou install il la dependencence p7zip
Petit complément d’info : Il existe aussi pbzip2 ou lbzip2 pour du BZ2
Et pxz pour LZMA2
Compresser avec tar :
tar -I pigz -cvf archive.tar.gz fic1 fic2 (c’est -I un « i » majuscule)
Décompresser avec tar
tar -I pigz -xvf archive.tar.gz
pigz, pbzip2, lbzip2 et pxz sont utilisables comme gzip bzip2 et xz donc il est possible de faire des liens symboliques :
mv /bin/gzip /bin/gzip.ori
mv /bin/gunzip /bin/gunzip.ori
ln -sv /usr/bin/pigz /bin/gzip
ln -sv /usr/bin/pigz /bin/gunzip
mv /bin/bzip2 /bin/bzip2.ori
mv /bin/bunzip2 /bin/bunzip2.ori
ln -sv /usr/bin/lbzip2 /bin/bzip2
ln -sv /usr/bin/lbunzip2 /bin/bunzip2
Ainsi il sera possible de faire comme avant avec tar et pigz se substitue naturellement à gzip :
tar czvf archive.tar.gz fic1 fic2 (et là, avec htop le constat est que le multithreading est actif)
J’ai prévu de faire un article sur mon site expliquant tout cela ;)
Attention, fedora c’est /usr/bin pour la localisation de bzip2 et gzip
Modification du commentaire ci-dessus : cause erreur dans le ln -sv et les chemins des exécutables :D
Merci pour ce complément d’info, y’a de quoi faire :)
De rien, je vais expliquer tout cela dans un petit article avec quelques tests de performance ;)
Tu nous fileras le lien ;)
Gzip et Bz2 (tar étant non compressé), sont déjà tellement rapide, que c’est le disque dur le facteur limitant. 7z (xz, lzma2), est par algorithme difficilement parallélisable. Et coté performance, il vaut mieux l’OpenCL que le multi-coeur, pour avoir 10x plus de performance qu’un quad coeur avec une carte moyenne gamme.
En effet tar est toujours associé à un autre module pour la compression(je le savais en plus grr). Pour le reste tu n’as pas tort, ça ce discute en effet ;)