Archiv verlassen und diese Seite im Standarddesign anzeigen : optimieren und tunen
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.
http://lfsforum.org/howtos/howto/html/10
cu next
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
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 ???
hab mal irgendwo gelesen, dass -O6 normalerweise das optimale ist und mehr nicht wirklich etwas bringt...
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)
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)).
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.
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?
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
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
Wobei diese Probleme verschiedene Ursachen haben können, z.B. Fehler im compiler, ungünstig geschriebener code, ...
Welche Optionen sollte man dann für produktive Umgebungen nehmen?
Original geschrieben von Christian Korff
Welche Optionen sollte man dann für produktive Umgebungen nehmen?
keine
-O2 -march=$ARCH <-- das sollte sicher sein
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)
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
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.
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
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:
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
-mcpu brauchst du nicht, wenn du -march nimmst.
Genauer gesagt, -march=cpu-typ impliziert -mcpu=cpu-typ.
kann ich die compiler optionen einfach an make übergeben?
zb: make -j3 -march=i686
gelten diese Flags bzw Optimierungen auch beim Kernel compilieren??
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.