Optimisation du système et changement de CHOST

Conversations générales au sujet de Sabayon Linux

Moderator: Moderators

Optimisation du système et changement de CHOST

Postby turquoise » Thu Dec 14, 2006 18:36

Optimisation du système et changement de CHOST

Pour faire suite au post sur l'optimisation pour un Pentium 4, voici un tuto plus complet sur les changements de CFLAGS et de CHOST pour optimiser la compilation sur votre système.

Pour illustrer mes propos, j'accompagnerai mes explications d'un exemple de la procédure pour un Athlon XP 2000+.

Pour déterminer le type de processeur, on tape la commande suivante en mode console :
Code: Select all
cat /proc/cpuinfo


Dans mon cas, ça donne ceci :

processor : 0
vendor_id : AuthenticAMD
cpu family : 6
model : 8
model name : AMD Athlon(tm) XP 2000+
etc., etc.

Ensuite, on consulte la liste de Cflags sûrs sur le wiki de Gentoo ( http://fr.gentoo-wiki.com/HOWTO_CFLAGS ), et on choisit le bon processeur, dans mon cas, ceci :
Athlon-tbird XP (AMD)
vendor_id : AuthenticAMD
cpu family : 6
model : 8
model name : AMD Athlon(tm)
Code: Select all
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

En principe, il suffit de coller les codes aux bons endroits dans le fichier /etc/make.conf.

Toutefois, dans le cas présent, le CHOST était originellement i586-pc-linux-gnu, ce qui implique un changement plus important que celui des CFLAGS.

La mauvaise nouvelle est que cela peut endommager sérieusement un système si c'est mal fait. La bonne nouvelle, c'est que la procédure n'est pas trop compliquée et les chances de réussite sont très bonnes si on suit rigoureusement la procédure. Donc, si votre système fonctionne bien, il vaut mieux le laisser comme il est!

La première chose à faire évidemment, c'est de changer la variable CHOST dans votre /etc/make.conf si vous ne l'avez pas déjà fait plus haut.

Une fois que c'est fait, il faut recompiler certains paquetages en tapant la commande suivante en mode console :

Code: Select all
emerge -av1 binutils gcc glibc


Ensuite, il faut vérifier que tout est bien configuré :

Code: Select all
gcc-config -l

[1] i686-pc-linux-gnu-4.1.1 *
Code: Select all
gcc-config -c

i686-pc-linux-gnu-4.1.1

Code: Select all
binutils-config -l

[1] i686-pc-linux-gnu-2.16.1 *
Code: Select all
binutils-config -c

i686-pc-linux-gnu-2.16.1

Ensuite, on regarde s'il reste des traces de l'ancienne configuration dans /etc/env.d :

Code: Select all
cd /etc/env.d/
grep 586 *

05gcc-i586-pc-linux-gnu:PATH="/usr/i586-pc-linux-gnu/gcc-bin/4.1.1"
05gcc-i586-pc-linux-gnu:ROOTPATH="/usr/i586-pc-linux-gnu/gcc-bin/4.1.1"

Nota : Les résultats pour la recherche de l'ancien CHOST peuvent varier d'un système à l'autre. Une entrée vide signifie tout simplement que tout fonctionne.

Avant d'enlever ces références, il faut vérifier la présence de leurs équivalents dans la nouvelle configuration :

Code: Select all
grep 686 *

05binutils:MANPATH=/usr/share/binutils-data/i686-pc-linux-gnu/2.16.1/man
05binutils:INFOPATH=/usr/share/binutils-data/i686-pc-linux-gnu/2.16.1/info
05binutils:LDPATH=/usr/i686-pc-linux-gnu/lib
05gcc:PATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.1"
05gcc:ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.1"
05gcc:MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man"
05gcc:INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info"
05gcc:LDPATH="/usr/lib/gcc/i686-pc-linux-gnu/4.1.1"

Tout à l'air beau et comme il ne devrait y avoir qu'une seule instance de ces variables, il faut enlever l'ancienne variable :

Code: Select all
rm 05gcc-i586-pc-linux-gnu


Maintenant, il faut vérifier le répertoire /etc/env.d/binutils/

Code: Select all
cd /etc/env.d/binutils/
ls -la

total 8
-rw-r--r-- 1 root root 15 Sep 3 13:48 config-i686-pc-linux-gnu
-rw-r--r-- 1 root root 126 Sep 3 13:48 i686-pc-linux-gnu-2.16.1

Code: Select all
cat config-i686-pc-linux-gnu

CURRENT=2.16.1
Code: Select all
cat i686-pc-linux-gnu-2.16.1

TARGET="i686-pc-linux-gnu"
VER="2.16.1"
LIBPATH="/usr/lib/binutils/i686-pc-linux-gnu/2.16.1"
FAKE_TARGETS="i686-pc-linux-gnu"

Il faut aussi vérifier le répertoire de GCC :

Code: Select all
cd /etc/env.d/gcc
ls -la

total 12
-rw-r--r-- 1 root root 32 Sep 3 16:43 config
-rw-r--r-- 1 root root 32 Aug 3 14:25 config-i386-pc-linux-gnu
-rw-r--r-- 1 root root 292 Sep 3 16:43 i686-pc-linux-gnu-4.1.1

Code: Select all
cat config

CURRENT=i686-pc-linux-gnu-4.1.1

Code: Select all
cat config-i586-pc-linux-gnu

CURRENT=i586-pc-linux-gnu-4.1.1

Code: Select all
cat i686-pc-linux-gnu-4.1.1

PATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.1"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.1"
LDPATH="/usr/lib/gcc/i686-pc-linux-gnu/4.1.1"
GCCBITS="32"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info"
STDCXX_INCDIR="g++-v4"

Les fichiers config et i686-pc-linux-gnu-4.1.1 sont en ordre, mais il reste un fichier à enlever : config-i586-pc-linux-gnu.

Code: Select all
rm config-i586-pc-linux-gnu


Maintenant que tout est nettoyé, il faut mettre à jour l'environnement :

Code: Select all
env-update && source /etc/profile


Ensuite, vérifier (encore!) que tout est en ordre :

Code: Select all
grep -r 586 /etc/env.d/


S'il ne reste rien, tant mieux! Sinon, il faut enlever les fichiers fautifs.

Pour finir, il faut recompiler libtool et exécuter fix_libtools_files.sh. Faire bien attention d'utiliser la bonne version de GCC!

Code: Select all
emerge -av1 libtool

Code: Select all
fix_libtool_files.sh 4.1.1 --oldarch i586-pc-linux-gnu


Voilà, c'est fait! Enfin, presque! Il reste un choix à faire : recompiler ou ne pas recompiler. Dans le premier cas, utiliser la commande suivante :

Code: Select all
emerge -e world


En theorie, cette opération n'est pas obligatoire. Toutefois, pour ceux qui choisissent de ne pas recompiler, il est fortement recommandé de recompiler python et les paquetages perl liés à CHOST :

Code: Select all
emerge -av1 python
emerge -av portage-utils
emerge -av1 `qfile /usr/lib/perl* -Cq | sort -u`


Et voilà, c'est fini!

Adapté à partir de la documentation officielle de Gentoo et du wiki.

Commentaires et ajouts bienvenus.
Ma philosophie d'apprentissage : essayer, et si ça casse, essayer de réparer.
My learning philosophy: try it, and if it breaks, try to fix it.
Image
turquoise
Old Dear Hen
 
Posts: 719
Joined: Wed Nov 15, 2006 1:14
Location: Abitibi-Témiscamingue!

Postby olroxthor » Fri Dec 15, 2006 3:11

Bonjour Turquoise,

Lorsque l' on tape cat /proc/cpuinfo on remarque que tout en bas il y a : flag : .........

Ma question

toutes ces indication ne sont-elles pas à rajouter dans ton CFLAGS=".........." ?

Merci pour tes contributions et tes nombreuses réponses.[/i]
olroxthor
Young Hen
 
Posts: 37
Joined: Wed Dec 13, 2006 15:56
Location: aix en provence

Postby turquoise » Fri Dec 15, 2006 3:47

Tu peux les rajouter si tu veux le faire, mais ce n'est pas obligatoire.

Par exemple, si ton processeur supporte mmx et 3dnow comme le mien, peut-être voudras-tu les activer pour profiter de ces fonctionalités au maximum. Par contre, tout fonctionnera très bien si tu te contentes de mettre les CFLAGS indiqués dans la liste des CFLAGS sûrs.
Ma philosophie d'apprentissage : essayer, et si ça casse, essayer de réparer.
My learning philosophy: try it, and if it breaks, try to fix it.
Image
turquoise
Old Dear Hen
 
Posts: 719
Joined: Wed Nov 15, 2006 1:14
Location: Abitibi-Témiscamingue!

Postby olroxthor » Fri Dec 15, 2006 12:08

Par exemple, si ton processeur supporte mmx et 3dnow


C'est mon cas aussi.

Merci pour tes réponses rapides.
olroxthor
Young Hen
 
Posts: 37
Joined: Wed Dec 13, 2006 15:56
Location: aix en provence

Postby olroxthor » Sun Dec 17, 2006 1:08

Chère Turquoise,

J'ai suivi ton tuto mais :

- quand je fais grep 586 * dans env.d j' obtiens :
Code: Select all
05compiler:INFOPATH="/usr/share/gcc-data/i586-pc-linux-gnu/4.1.1/info"
05compiler:MANPATH="/usr/share/gcc-data/i586-pc-linux-gnu/4.1.1/man"
05compiler:LDPATH="/usr/lib/gcc/i586-pc-linux-gnu/4.1.1"


- Lorsque j' ai taper emerge -av1 libtool j' ai comme erreur :
Code: Select all
!!! Please attach the following file when filing a report to bugs.gentoo.org:
!!! /var/tmp/portage/sys-devel/libtool-1.5.22/work/libtool-1.5.22/config.log

!!! ERROR: sys-devel/libtool-1.5.22 failed.
Call stack:
  ebuild.sh, line 1564:   Called dyn_compile
  ebuild.sh, line 937:   Called src_compile
  libtool-1.5.22.ebuild, line 128:   Called econf
  ebuild.sh, line 540:   Called die

!!! econf failed
!!! If you need support, post the topmost build error, and the call stack if relevant.


Voila à plus.
olroxthor
Young Hen
 
Posts: 37
Joined: Wed Dec 13, 2006 15:56
Location: aix en provence

Postby turquoise » Sun Dec 17, 2006 13:38

olroxthor wrote:Chère Turquoise,

J'ai suivi ton tuto mais :

- quand je fais grep 586 * dans env.d j' obtiens :
Code: Select all
05compiler:INFOPATH="/usr/share/gcc-data/i586-pc-linux-gnu/4.1.1/info"
05compiler:MANPATH="/usr/share/gcc-data/i586-pc-linux-gnu/4.1.1/man"
05compiler:LDPATH="/usr/lib/gcc/i586-pc-linux-gnu/4.1.1"


- Lorsque j' ai taper emerge -av1 libtool j' ai comme erreur :
Code: Select all
!!! Please attach the following file when filing a report to bugs.gentoo.org:
!!! /var/tmp/portage/sys-devel/libtool-1.5.22/work/libtool-1.5.22/config.log

!!! ERROR: sys-devel/libtool-1.5.22 failed.
Call stack:
  ebuild.sh, line 1564:   Called dyn_compile
  ebuild.sh, line 937:   Called src_compile
  libtool-1.5.22.ebuild, line 128:   Called econf
  ebuild.sh, line 540:   Called die

!!! econf failed
!!! If you need support, post the topmost build error, and the call stack if relevant.


Voila à plus.


Pour le résultat de grep 586*, tu dois enlever ce fichier si tous les bons fichiers sont présents lors du grep 686*
Code: Select all
rm 05compiler


Pour l'autre, c'est peut-être dû à un opération omise quelque part. J'avoue que ça me laisse un peu perplexe...
Ma philosophie d'apprentissage : essayer, et si ça casse, essayer de réparer.
My learning philosophy: try it, and if it breaks, try to fix it.
Image
turquoise
Old Dear Hen
 
Posts: 719
Joined: Wed Nov 15, 2006 1:14
Location: Abitibi-Témiscamingue!

Postby olroxthor » Mon Dec 18, 2006 1:43

Ne soit pas perplexe ...

Je vais réinstaller sabayon 3.2 x86 sans faire aucune manip. Et la première chose que je vais faire c' est ton tuto.

Je précise que j' avais fait une mise à jour via le DVD avant et que j' ai tenter quelques depclean et autres commandes.

Ensuite il a essayer (et moi aussi) d' installer gcc 4.1.1.rc1, mais là sa coincé. Avec Kuroo je n' en parle pas !!! Et à la fin j' ai l' impression que c' est gcc4.1.1 qui à été recompiler et mis à la place de la vercion rc1.

On verra en réinstallant Sabayon et je posterais le résultat .
olroxthor
Young Hen
 
Posts: 37
Joined: Wed Dec 13, 2006 15:56
Location: aix en provence

Postby olroxthor » Wed Dec 20, 2006 14:24

Re alors, je viend de réinstaller à partir du cd miniedition et lorsque je tape :

emerge -av1 binutils gcc glibc

il me retourne cette erreur :

emerge: there are no ebuilds to satisfy "binutils".

je vais don réinstaller à partir du DVD.

à plus et bonnes fêtes.
olroxthor
Young Hen
 
Posts: 37
Joined: Wed Dec 13, 2006 15:56
Location: aix en provence

Postby olroxthor » Tue Dec 26, 2006 23:15

voila j' ai réinstaller sabayon par le DVD et j' ai tout de suite appliquer le tuto de turquoise mais :

Code: Select all
onsultez <URL:http://bugs.gentoo.org/> pour plus de détail.
The bug is not reproducible, so it is likely a hardware or OS problem.
make[2]: *** [c-common.o] Erreur 1
make[1]: *** [stage1_build] Erreur 2
make: *** [profiledbootstrap] Erreur 2

!!! ERROR: sys-devel/gcc-4.1.1-r1 failed.
Call stack:
  ebuild.sh, line 1564:   Called dyn_compile
  ebuild.sh, line 937:   Called src_compile
  ebuild.sh, line 1257:   Called toolchain_src_compile
  toolchain.eclass, line 24:   Called gcc_src_compile
  toolchain.eclass, line 1535:   Called gcc_do_make
  toolchain.eclass, line 1409:   Called die

!!! emake failed with profiledbootstrap
!!! If you need support, post the topmost build error, and the call stack if relevant.

olroxthor
Young Hen
 
Posts: 37
Joined: Wed Dec 13, 2006 15:56
Location: aix en provence

Postby blacksad » Tue May 22, 2007 20:50

Petit Retour d'expérience j'ai tester le 1er tuto optimisation P4 en rajoutant seulement la ligne

methode 1
CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer" mais en gardant un système i386

methode 2 :
puis j'aitester l'autre tuto sur une nouvelle install et en passant en i686 comme indiquer sur le site gentoo donc :

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

et en suivant tout le tuto aucun pb !

Par contre la methode 1 en ne modifiant pas le CHOST me donne un système beaucoup plus réactif sur mon pc pourquoi ?

la je tourne avec la methode 2 mais je restesterais pour en avoir le coeur net
blacksad
Young Hen
 
Posts: 26
Joined: Thu May 10, 2007 23:38

Next

Return to French

Who is online

Users browsing this forum: No registered users and 1 guest

cron