[Gentoo]Optimale Compilerflags

RedWing

Erfahrenes Mitglied
Hallo,

bin grad dabei mir eine Gentoo 2004.3 Distribution mit Kernel 2.6.10 anzueignen.

Nun meine Frage:

In der /etc/make.conf für das portage System von Gentoo kann ich ja die Compilerflags angeben.
Ich habe meine Installation aber mittlerweile schon fast komplett fertig und habe aus
Unwissenheit alles mit dem Flag "-march=i386" kompiliert, obwohl ich einen Pentium 4
habe.
Macht es Performancemäßig einen großen Unterschied ob ich nun alles mit -march=i386,
oder mit -march=i686 kompiliere?
Wenn ja, wie kann ich mein komplettes System rekompilieren und was würde es da zu beachten geben?

Danke und Gruß

RedWing
 
Hallo,

es macht viel Sinn, dein System auf deine Architektur hin zu optimieren, hierdurch werden die speziellen Funktionen des Prozessors optimal genutzt und das System wird schneller laufen.

Du kannst auf diversen Seiten, auch auf den offiziellen Gentooseiten die optimalen Flags für dein System erfahren, hierzu benötigst du Angaben über deinen Prozessor, die möglichst genau sein sollten.

Um dein System nachträgöich auf deine Konfiguration hin zu optimieren, musst du entsprechend die Flags in die make.conf setzen und in der Shell folgendes Kommando ausführen:

Code:
 emerge -e system && emerge -e world
 
Hallo,

es macht viel Sinn, dein System auf deine Architektur hin zu optimieren, hierdurch werden die speziellen Funktionen des Prozessors optimal genutzt und das System wird schneller laufen.

Mhm da scheinen sich die Meinungen wohl auseinander zu gehen:

Perormancegewinn von i368 zu pentium4 könnte so bei 50Promille liegen oder mehr oder weniger Smile
Am meisten noch bei Multimediazeugs wegen mmx und sse.

Siehe dazu auch:

http://forums.gentoo.org/viewtopic.php?t=285846&sid=5a1a7ca25664912e26b59f721fa3f833

Aber trotzdem vielen Dank für deinen Tip, ich werde wenn ich Zeit finden sollte :)
mein System mal neu übersetzen mit den entsprechenden Kompilerflags...

Danke und Gruß

RedWing
 
it-ruffy hat gesagt.:
Code:
   emerge -e system && emerge -e world

emerge -e world reicht, denn system ist in world enthalten.

Außerdem würde ich empfehlen nicht alle CFlags zu setzen, die laut manpage spektakuläre Optimierungen erzeugen. Das macht i.d.R. mehr Ärger, als mehr Performance...

Code:
-O2 -march=<deine> -pipe -fomit-frame-pointer -ftracer

...ist vollkommen ausreichend und i.d.R. stabil.

Eventuell -fweb, wenn Du >=gcc-3.4 verwendest.
 
Zuletzt bearbeitet:
-O3 kann unter umstaenden auch noch ganz sinnvoll sein, allerdings kompilieren damit einige Pakete unter Umstaenden nicht ganz durch.
 
ocb hat gesagt.:
emerge -e world reicht, denn system ist in world enthalten.

Nein bei mir hat das nicht gereicht.
Siehe dazu:

http://www.gentooforum.de/thread.php?threadid=4567

Und falls es noch jemand interessieren sollte:

Meine make.conf für einen Pentium IV, NVIDIA Graka schauts mittlerweile so
aus, und es klappt eigentlich alles ganz gut:

Code:
CFLAGS="-O3 -march=pentium4 -pipe -fomit-frame-pointer -falign-functions=64  -falign-jumps=8 -falign-loops=8"
LINGUAS="de"

VIDEO_CARDS="nvidia"
CHOST="i686-pc-linux-gnu"

CXXFLAGS="${CFLAGS}"

MAKEOPTS="-j2"

GENTOO_MIRRORS="ftp://ftp.uni-erlangen.de/pub/mirrors/gentoo"

USE="-gnome gtk qt kde dvd alsa cdr ithreads"
CONFIG_PROTECT="-*"
ALSA_CARDS="intel8x0"

FEATURES="ccache"

CCACHE_DIR="/var/tmp/ccache"
CCACHE_SIZE="2G"

-O3 kann unter umstaenden auch noch ganz sinnvoll sein, allerdings kompilieren damit einige Pakete unter Umstaenden nicht ganz durch.

Auch da lief (bei mir zumindest) alles perfekt. Es kommt da wohl auch auf
die gcc Version an.

Anmerkung:
Wer im Besitz eines Prozessors mit Hyperthreading Unter-
stützung ist und diese Option im Kernel auch aktiviert hat kann auch
MAKEOPTS="-j3" anstatt MAKEOPTS="-j2" dahernehmen

Gruß

RedWing
 
Zurück