Compression en multithreading (pigz & lbzip2)

Publiée le 01 Juillet 2013

La compression est extrêmement pratique! Seulement les délais de compression et de décompression peuvent vite devenir un cauchemar.

Lors d’une de mes  précédentes mission cette problématique c’est très vite posée à l’un de mes collègues admin. La solution proposée par l’un d’eux a été des plus astucieuse!

La plupart des outils de compressions connus utilisent qu’un seul thread alors que de nos jours les serveurs gèrent de mieux en mieux le multithreading.

Pour ma part je trouve cela très dommage. Si vous avez des milliers d’archives à traiter, les méthodes conventionnelles risquent d’être vite limitées.

Mais encore une fois nos barbus ont pensés à tout!

 

PIGZ : Cette outil disponible dans tous les dépots officiels (installation via apt et yum) vous permet de gérer vos archives gzip bien plus rapidement que gunzip.

Pigz gère le multithreading et le gain en performance est non négligeable!

Ci dessous le Benchmark entre Gzip et Pigz::

Voici 10 fichiers de 10Mo chacun:

 

Les temps d’exécutions avec Pigz:

 

Et celle avec gzip:

 

Comme vous pouvez le constater Pigz est bien plus performant (et encore le test a été effectués avec un échantillon de dix fichiers de 10Mo, imaginez le gain de temps avec des milliers de fichiers!).

Site des développeurs: http://zlib.net/pigz/

 

LBZIP2 : 

Ci-dessous le benchmark:

 

Beaucoup font l’éloge de PBZIP2 pour effectuer des compression en Bzip2 mais après des test j’ai pu m’apercevoir que LBZIP2 est beaucoup plus performant aussi bien en compression qu’en décompression.

Tout ces tests ont été effectuées sur une machine core i7, 8 Go de Ram avec une distribution Debian Wheezy. Les fichiers de tests ont été créés dans une partition EXT4.