Utiliser Gentoo et Calculate Linux

Gentoo : Activer le multithread pour gzip et bzip2

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

Introduction



Par défaut, les algorithmes gzip et bzip2, utilisables sous Linux via leurs binaires compressent en mono-thread. C'est à dire qu'un seul coeur du processeur est utilisé.
Il en est de même avec l'option associée de tar (-z pour gzip et -j pour bzip2)

Il est possible d'utiliser des programmes alternatifs pour compresser en multithreading :
- pigz pour gzip
- lbzip2 ou pbzip2 pour bzip2

Nous allons voir ici, comment sous Gentoo, remplacer gzip et bzip2 respectivement par pigz et lbzip2.

Ainsi, on pourra toujours invoquer les commandes :
- gzip, zcat, zgrep, -z de tar et tout sera redirigé sur pigz (qui s'utilise avec les mêmes options).
- bzip2, bzcat, bzgrep, -j de tar et tout sera redirigé sur lbzip2 (qui s'utilise avec les mêmes options).

Nous allons utiliser la méthode officielle qui remplace l'exécutable gzip et bzip2 par un lien symbolique vers pigz et lbzip2.

Ainsi, rien ne changera pour nos habitudes et commandes, mais les temps de compression et décompression seront grandement améliorés !

Paramétrage du multithreading



Paramétrage GZIP



Pour gzip, on va utiliser le paquet virtuel app-alternatives/gzip qui va s'occuper de gérer les liens symboliques.

Pour cela, on va désactiver le USE FLAG "reference" qui est gzip traditionnel, et activer le USE FLAG pigz :

Code BASH :
echo "app-alternatives/gzip pigz -reference" >> /etc/portage/package.use/custom


Ensuite, il suffit de réémerger le paquet :

Code BASH :
emerge -av app-alternatives/gzip


Pour vérifier, on peut constater que /bin/gzip pointe sur /usr/bin/pigz :

Code BASH :
file /bin/gzip


Code TEXT :
/bin/gzip: symbolic link to ../usr/bin/pigz


Evidemment, pour revenir en arrière, supprimez la ligne dans package.use ajoutée précédemment OU désactivez le USE "pigz" et réactiver "reference"


Paramétrage BZIP2



Pour bzip2, on va utiliser le paquet virtuel app-alternatives/bzip2 qui va s'occuper de gérer les liens symboliques.

Pour cela, on va désactiver le USE FLAG "reference" qui est bzip2 traditionnel, et activer le USE FLAG lbzip2 :

Code BASH :
echo "app-alternatives/bzip2 lbzip2 -reference" >> /etc/portage/package.use/custom


Ensuite, il suffit de réémerger le paquet :

Code BASH :
emerge -av app-alternatives/bzip2


Pour vérifier, on peut constater que /bin/bzip2 pointe sur /usr/bin/lbzip2 :

Code BASH :
file /bin/bzip2


Code TEXT :
/bin/bzip2: symbolic link to ../usr/bin/lbzip2


Evidemment, pour revenir en arrière, supprimez la ligne dans package.use ajoutée précédemment OU désactivez le USE "lbzip2" et réactiver "reference"

Si vous le souhaitez, vous pouvez utiliser la même méthode et utiliser pbzip2 au lieu de lbzip2.
Les 2 outils ont des performances similaires et fonctionnent de manière identique.