OldGentooWiki:Réduire le temps de compilation
De Gentoo-Quebec.
Indes des trucs et astuces avancés
Introduction
La distribution Gentoo rend disponible des outils ou des configurations qui sont assez inconnus pour la plupart des utilisateurs.
Au cours de ce guide, nous allons voir 4 options qui fonctionnent très bien et qui vont pouvoir réduire de façon significative votre temps de compilation dans certains cas.
MAKEOPTS="-j5 -l5" PORTAGE_ELOG_CLASSES="log warn error info" PORTAGE_ELOG_SYSTEM="echo:log,warn save:log,warn,error,info syslog:error" EMERGE_DEFAULT_OPTS="--jobs=5 --load-average=5.0 --with-bdeps y" PORTAGE_NICENESS="19"
Tout d'abord, la variable MAKEOPTS indique au compilateur GCC via la commande make, combien de processus GCC peut lancer simultanément. Pour calculer correctement celle-ci, il faut appliquer la formule suivante :
Nombre de processeurs(cores) + 1 = La valeur du -j
Par exemple, pour un Intel Quad Core Q9550 qui a en fait 4 cores, on doit indiquer 5.
De plus, le paramètre -l, permet de s'assurer que GCC ne va pas lancer plus que 5 processus simultanément, c'est une protection supplémentaire qui est incluse dans la version de portage 2.2-rc3 et suivante. C'est en fait du load-balancing au niveau de GCC.
Les lignes PORTAGE_ELOG_CLASSES et PORTAGE_ELOG_SYSTEM sont nécessaires, car avec cette nouvelle fonctionnalité, le comportement par défaut de votre Gentoo va changer, puisque nous ne verrons plus les lignes de compilations défiler comme d'habitude.
Ces lignes vont s'assurer que nous allons avoir tous les messages importants suite à une compilation ainsi que les infos des plantages lorsque la situation va se présenter.
Enfin, la ligne EMERGE_DEFAULT_OPTS va permettre à portage d'activer la compilation en parallèle de plusieurs packages. Cette ligne peut faire une énorme différence au niveau de votre temps de compilation,car si votre ordinateur est assez puissant, Portage va pouvoir utiliser le maximum de celui-ci, si vous le permettez bien sûr.
Le paramètre --jobs=5 permet d'indiquer le nombre de packages que portage peut traiter en même temps.
Le paramètre --load-average=5.0 permet d'appliquer une barrière au niveau de Portage, toujours dans le but de limiter le nombre de compilation en cours.
Le paramètre --with-bdeps y permet de s'assurer que le paramètre -D ne sera pas désactiver en tout temps.
Le paramètre PORTAGE_NICENESS=10 indique la priorité que la compilation va obtenir sur votre système. La valeur va varier entre 20 et 0. Plus la valeur est faible, plus la priorité au niveau de la compilation va être élevée et il peut arriver que cela ralentise votre ordinateur grandement. La valeur recommandée est soit 20 ou 19 si votre ordinateur en arrache.
Par défaut, sans cette valeur Portage utilise la valeur 0, donc si tout va bien, vous ne devez pas ajouter cette variable dans votre make.conf tout simplement.
La règle qu'il faut appliquer est la suivante : La valeur du paramètre MAKEOPTS doit correspondre aux variables --jobs et --load-average.
Vous pouvez en apprendre plus ici : http://linuxreviews.org/man/emerge/ et http://blogs.gentoo.org/zmedico/2008/07/23/portage_parallel_builds
