PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : optimieren und tunen


chrisky
31.12.02, 15:05
Hallo.
Ich suche Möglichkeiten mein Linux schneller zu machen und hab deshalb ein paar Fragen:

1) Welchen Compiler sollte man verwenden? (Ich will nur für meine eigenen Rechner compilieren, darf auch kommerziell sein solange es finanzierbar ist)

2) Welche Optionen sollte ich bei gcc verwenden?

3) Was ist schneller: static oder shared?

4) Gibt es irgendwelche Optionen mit dennen ich Linux im allgemeinen schneller machen kann? (also nicht beim kompilieren sondern allgemein)

Danke schonmal im vorraus.

next
31.12.02, 15:56
http://lfsforum.org/howtos/howto/html/10

cu next

varg
31.12.02, 17:06
Original geschrieben von Christian Korff

2) Welche Optionen sollte ich bei gcc verwenden?


man gcc oder hier (http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/Optimize-Options.html#Optimize%20Options)

hier sind meine:

-O9 -march=athlon-xp -pipe -mmmx -m3dnow -falign-labels=2 -falign-loops=2 -falign-jumps=2 -falign-functions=2 -fomit-frame-pointer -ffast-math -fstrength-reduce -ffloat-store -fforce-addr -fforce-mem -fexpensive-optimizations

cu

patrick

DustPuppy
31.12.02, 17:17
Original geschrieben von varg
man gcc oder hier (http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/Optimize-Options.html#Optimize%20Options)

hier sind meine:

-O9 -march=athlon-xp -pipe -mmmx -m3dnow -falign-labels=2 -falign-loops=2 -falign-jumps=2 -falign-functions=2 -fomit-frame-pointer -ffast-math -fstrength-reduce -ffloat-store -fforce-addr -fforce-mem -fexpensive-optimizations

cu

patrick

ich dachte -O3 ist das höchste ???

oenone
31.12.02, 17:38
hab mal irgendwo gelesen, dass -O6 normalerweise das optimale ist und mehr nicht wirklich etwas bringt...

chrisky
31.12.02, 17:59
Original geschrieben von varg
man gcc oder hier (http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/Optimize-Options.html#Optimize%20Options)

hier sind meine:

-O9 -march=athlon-xp -pipe -mmmx -m3dnow -falign-labels=2 -falign-loops=2 -falign-jumps=2 -falign-functions=2 -fomit-frame-pointer -ffast-math -fstrength-reduce -ffloat-store -fforce-addr -fforce-mem -fexpensive-optimizations

cu

patrick
Tja, ich versteh blos die Compileroptionen nicht alle ;)
Zudem wird mit -m3dnow doch vermutlich nix nützen. (Mein Rechner läuft mit einem 1,8 GHz Northwood)

zander
31.12.02, 23:47
hab mal irgendwo gelesen, dass -O6 normalerweise das optimale ist und mehr nicht wirklich etwas bringt...

Eigentlich ist bereits bei -O3 Feierabend (vergleiche gcc(1)).

zander
31.12.02, 23:51
Tja, ich versteh blos die Compileroptionen nicht alle ;)
Zudem wird mit -m3dnow doch vermutlich nix nützen. (Mein Rechner läuft mit einem 1,8 GHz Northwood)

Ich würde mir darüber weiter keine Gedanken machen; die Optionen willkürlich aneinanderzuketten führt nicht zum gewünschten Ergebnis, und selbst bei optimalem Einsatz ist der Leistungsgewinn in der Regel vernachlässigbar. Zu beachten ist ausserdem, dass diese Optionen auch negative Auswirkungen haben, z.B. deutlich grössere Binärdateien.

chrisky
01.01.03, 00:25
Original geschrieben von zander
Tja, ich versteh blos die Compileroptionen nicht alle ;)
Zudem wird mit -m3dnow doch vermutlich nix nützen. (Mein Rechner läuft mit einem 1,8 GHz Northwood)

Ich würde mir darüber weiter keine Gedanken machen; die Optionen willkürlich aneinanderzuketten führt nicht zum gewünschten Ergebnis, und selbst bei optimalem Einsatz ist der Leistungsgewinn in der Regel vernachlässigbar. Zu beachten ist ausserdem, dass diese Optionen auch negative Auswirkungen haben, z.B. deutlich grössere Binärdateien.
Also mit grösseren Binarys kann ich leben, ob jetzt was x oder y bytes hat. Solange das nicht mehr als das doppelte an Größe schluckt.
Aber was genau meinst du mit negativen Auswirkungen und was würdest du mir empfehlen um meine binarys zu optimieren?

varg
01.01.03, 00:28
Original geschrieben von Christian Korff
Aber was genau meinst du mit negativen Auswirkungen und was würdest du mir empfehlen um meine binarys zu optimieren?

es kann auch langsamer werden, optimieren hat nicht nur vorteile.

cu

3qualizer
01.01.03, 00:48
Wie's schon so schön von next verlinkt wurde:
... wohingegend die Optimierungen des gcc teilweise sehr fatale auswirkungen haben können bis hin zu segfaults und abstürzen.

und etwas weiter unten:

... in den anderen Fällen die weitaus häufiger vorkommen wird das Programm einfach instabil und erzeugt Speicher Zugriffsfehler (sog. Segmentation Faults) oder hat hat einfach andere Macken, das können Darstellungsfehler (wie ab und zu bei Mozilla beobachtet) oder auch einfach ganz "normale" Abstürze sein.
Eric

zander
01.01.03, 00:58
Wobei diese Probleme verschiedene Ursachen haben können, z.B. Fehler im compiler, ungünstig geschriebener code, ...

chrisky
01.01.03, 10:03
Welche Optionen sollte man dann für produktive Umgebungen nehmen?

varg
01.01.03, 10:39
Original geschrieben von Christian Korff
Welche Optionen sollte man dann für produktive Umgebungen nehmen?

keine

-O2 -march=$ARCH <-- das sollte sicher sein

chrisky
01.01.03, 11:03
Original geschrieben von varg
keine

-O2 -march=$ARCH <-- das sollte sicher sein
Gibt es keine Option für Pentium 4 Optimierung? (MMX, SSE, SSE2, allg. Prozessoroptimierung)

varg
01.01.03, 11:32
Original geschrieben von Christian Korff
Gibt es keine Option für Pentium 4 Optimierung? (MMX, SSE, SSE2, allg. Prozessoroptimierung)

-march=pentium4

http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/i386-and-x86-64-Options.html#i386%20and%20x86-64%20Options

chrisky
01.01.03, 13:58
Original geschrieben von varg
-march=pentium4

http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/i386-and-x86-64-Options.html#i386%20and%20x86-64%20Options
aha, kannte ich garnicht. Ich dachte bisher immer gcc erwartet was nummerisches wie 586 oder 686.

Ne Frage zu dem Link:
Was ist der Unterschied zwischen -mcpu=cpu-type und -march=cpu-type?

Außerdem ist mir die Option -mfpmath=sse aufgefallen, sollte man die benutzen? Die Option wirkt sehr verführerich.

zander
01.01.03, 15:12
Ne Frage zu dem Link:
Was ist der Unterschied zwischen -mcpu=cpu-type und -march=cpu-type?

Auszug aus dem zuletzt genannten Dokument:


-march=cpu-type
Generate instructions for the machine type cpu-type. The choices for cpu-type are the same as for -mcpu. Moreover, specifying -march=cpu-type implies -mcpu=cpu-type

chrisky
01.01.03, 15:55
Original geschrieben von zander
Ne Frage zu dem Link:
Was ist der Unterschied zwischen -mcpu=cpu-type und -march=cpu-type?

Auszug aus dem zuletzt genannten Dokument:
lesen kann ich auch (ist nicht böse gemeint)
ich versteh das blos nicht, außer das man dasselbe angeben kann. :confused:

varg
01.01.03, 16:30
Original geschrieben von Christian Korff
lesen kann ich auch (ist nicht böse gemeint)
ich versteh das blos nicht, außer das man dasselbe angeben kann. :confused:

-mcpu brauchst du nicht, wenn du -march nimmst.

-mcpu soll die abwärts kompatibilität sichern, wenn du -mcpu=i686 machst soll er auch auf einen 486er noch laufen.
habe ich irgendwo mal gelesen.

cu

zander
01.01.03, 17:08
-mcpu brauchst du nicht, wenn du -march nimmst.

Genauer gesagt, -march=cpu-typ impliziert -mcpu=cpu-typ.

thenktor
04.02.04, 12:12
kann ich die compiler optionen einfach an make übergeben?
zb: make -j3 -march=i686

Araberboy
06.02.04, 19:13
gelten diese Flags bzw Optimierungen auch beim Kernel compilieren??