Accueil > Linux, Programmation > mgzip et pbzip2 ou la compression multithreads

mgzip et pbzip2 ou la compression multithreads

En ce dimanche, alors que je cherchais des infos sur les scripts baash multithreads, je suis tombé sur des articles parlant de programme de compression multithread mgzip et pbzip2.

mgzip et pbzip2 doivent tout être compiler avec un compilateur c++ compatible avec pthreads (comme gcc). A noter que pbzip2 est disponilbe pour la plupart des distributions et même une version compilé existe pour… MS Windows. Alors que mgzip devra être compilé à la main.

A noter que mgzip ne s’occupe que de la compression et que toute décompression de .gz devra ce faire avec l’habituelle commade gunzip. Tandis que pbzip2 fournis la commande pbunzip2 permettant la décompression tout en utilisant tous les processeurs.

Et je précise, les fichiers compressés avec mgzip et pbzip2 restent compatible avec les commandes standars.

Comme j’ai eu la flemme de compiler mgzip et étant plus intéressé par pbzip2, mgzip ne fait partie de mon petit benchmark !

Le test est relativement simple.  J’ai créé 3 archives .tar des sources du nouyau linux 2.6.29-r1, fournis par gentoo, et obtenus les 3 fichiers suivant :

1
2
3
-rw-r--r-- 1 root root 335933440 avril 19 13:02 bz_linux-2.6.29-gentoo-r1.tar
-rw-r--r-- 1 root root 335933440 avril 19 13:02 gz_linux-2.6.29-gentoo-r1.tar
-rw-r--r-- 1 root root 335933440 avril 19 13:02 pbz_linux-2.6.29-gentoo-r1.tar

Premier test : gzip

1
2
3
4
5
6
src # time gzip gz_linux-2.6.29-gentoo-r1.tar
real	0m18.347s
user	0m18.010s
sys	0m0.310s
src # ls -l *.gz
-rw-r--r-- 1 root root 74033609 avril 19 13:02 gz_linux-2.6.29-gentoo-r1.tar.gz

Deuxième test : bzip2

1
2
3
4
5
6
7
src # time bzip2 bz_linux-2.6.29-gentoo-r1.tar 
 
real	1m4.683s
user	1m4.390s
sys	0m0.290s
src # ls -l *.bz2
-rw-r--r-- 1 root root 57590055 avril 19 13:02 bz_linux-2.6.29-gentoo-r1.tar.bz2

Troisième test : pbzip2

1
2
3
4
5
6
7
time pbzip2 pbz_linux-2.6.29-gentoo-r1.tar 
 
real	0m19.830s
user	1m11.300s
sys	0m2.460s
src # ls -l pbz*
-rw-r--r-- 1 root root 57740857 avril 19 13:02 pbz_linux-2.6.29-gentoo-r1.tar.bz2

Résultat :
gzip :
durée : 18 secondes
taille de l’archive : 74033609 (71 M)

bzip2 :
durée : 1 minute
taille de l’archive : 57590055 (55 M)

pbzip2 :
durée : 19 secondes
taille de l’archive : 57740857 (56 M)

Les tests, ayant été effectués sur un Q6600 en cours d’utilisation avec X11, Gnome, Firefox etc. peuvent variés et ne sont donnés qu’à titre informatif.

Cela dit, et après plusieurs essais, les tailles sont identiques (heureusement !) et les durées varient assez peu. Mais la tendance reste la même : pour la durée d’un gzip, on obtient une archive bzip2 !

La différence de taille entre l’archive bzip2 et pbzip2 provient probablement du fait que pbzip2 enregistre des données supplémentaires, car lorsque j’ai essayé de décompresser une archive faite avec bzip2, pbzip2 m’indique qu’il lance la commande bzip2 : Switching to no threads mode: only 1 BZIP2 block found.

La décompression d’une archive bz2 faite avec pbzip2 avec bzip2 ce passe sans problème.

  • Share/Bookmark

Unique visitors to post: 115

Tags: | | | | | | | | | |

Articles relatifs

  1. maya
    26/06/2009 à 16:13 | #1

    Bonjour,

    Je suis tomber sur votre article par hasard. Pouvez vous m’indiquer comment installer l’extension bzip2 sur un gentoo.

    Merci

  2. 27/06/2009 à 09:16 | #2

    @maya
    Pour commencer,pbzip2 est un programme à part entière et non une extension pour bzip2.

    Pour l’installer sur une gentoo, rien de plus simple : emerge app-arch/pbzip2

    Pour pouvoir l’utiliser à la place de bzip2 :
    (en tant que root)
    cd /usr/bin
    ln -s ./pbzip2 bzip2
    ln -s ./pbunzip2 bunzip2

    et pour vérifier :
    which bzip2
    /usr/bin/bzip2

    Dorénavant, toute action entrainant une compression/décompression bzip2 sera traitée, de manière transparente, avec pbzip2.

  1. Pas encore de trackbacks