• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

Kann ich es bei Freebsd einstellen, dass es nur für meinen Prozessor kompiliert?

turrican

Well-Known Member
#2
Du kannst in der /etc/make.conf systemweit gültige Compiler-Einstellungen treffen, u.a. auch für den zu verwendenden CPU Typ
Die bekannten CPU Typen sind in der /usr/share/examples/etc/make.conf beschrieben
 

Rakor

Administrator
Mitarbeiter
#5
Die Frage ist jedoch wieso du das willst. Die Performance die du damit ggf. gewinnst ist den Aufwand (Compilern gegenüber fertigen Binaries, suchen wieso eine Software ggf. Mucken macht, etc.) normal nicht wert. Nur als Hinweis.
 

Rakor

Administrator
Mitarbeiter
#7
Wenn du mal Lust und Laune hast kannts du ja mal eine binary-generic Installation gegen eine optimierte Testen und mal paar Benchmarks machen. Würde mich echt interessieren wie da der Gewinn aussieht. Ich habe mich davon vor Jahren verabschiedet da es mir das nicht wert war.
 

ralli

BSD Fanboy
#8
Ich denke, bei heutiger aktueller und leistungsfähiger Hardware dürfte das keine wesentliche Rolle mehr spielen. Aber Ausnahmen gibt es natürlich immer. Weil man manchmal eine Feature braucht, was stanadardmäßig nicht mitcompiliert wurde.
 

ralli

BSD Fanboy
#10
Ich denke, ich habe mich nicht ganz klar ausgedrückt. Gänzlich ohne Ports komme auch ich nicht aus, auch wenn ich fertig compilierte Binarys bevorzuge. Beispiel:

Lame muß selbst compiliert werden, das gibt es aus lizenzrechtlichen Gründen nicht als Binary. Mit meiner internen Intel Grafik erkennt FreeBSD unter dem Mate Desktop nicht meine Soundkarte und deshalb muß ich libmatemixer neu bauen, weil der nur mit der Option ALSA bei mir funktionierte. Und ALSA war standardmäßig nicht aktiviert, sondern Pulseaudio, wenn ich mich recht erinnere. Das hat zwar jetzt nicht unbedingt etwas mit Leistungsoptimierung zu tun, aber sollte trotzdem als Beispiel genügen, warum es in manchen Fällen unumgänglich ist, das Binary seinen eigenen Bedürfnissen anzupassen.
 

-Nuke-

Well-Known Member
#11
Wie hoch der Performance-Gewinn sein kann, kann man gut unter Linux beobachten. Clear Linux ist eine Linux Distribution von Intel und fährt diverse Compiler-Optimierungen für moderne CPUs (SSE >=3, AVX und Co.).

https://www.phoronix.com/scan.php?page=article&item=void-linux-2018&num=1

Der Performance-Unterschied ist stellenweise gar nicht mal so minimal. Wenn man bedenkt, dass CPUs heutzutage pro Generation auch nur Sprünge von 5-20% machen ist ein nochmaliger Sprung alleine durch optimierte Software schon fast ein Generationswechsel.
 

Yamagi

Possessed With Psi Powers
Mitarbeiter
#13
Es kommt stark auf die Art des Codes an. Ein Großteil des Code dort draußen ist irgendwelcher Wald- und Wiesencode, der kaum von Optimierungen profitiert. Das hat verschiedene Gründe, begonnen beim generell eher geringe Optimierungspotential, modernen CPUs mit guter "Codeaufbereitung", sowie inzwischen doch auch mit einfachem -O2 recht schlauen Compilern. Aber dann gibt es eben auch Code, der stark profitiert, nicht nur von -march=native, sondern auch gerade von Dingen wie LTO und noch mehr PGO. Das sind oftmals Dinge wie Algorithmen, die nur einen kleinen Teil des Codes ausmachen, aber in denen sich viel Magie befindet und die entsprechend einen großen Anteil an der CPU-Last haben. Und da lohnt es sich dann wieder.
 

mr44er

Well-Known Member
#14
Aber dann gibt es eben auch Code, der stark profitiert, nicht nur von -march=native, sondern auch gerade von Dingen wie LTO und noch mehr PGO.
LTO und PGO sagt mir grade nix, aber hast du mal 1-2 Extrembeispiele / Ports, die stark von -march=native profitieren? Wahrscheinlich ist die Frage aus Unwissenheit an sich Murks. :)