Quellen optimal kompilieren

TerraX

Active Member
Um das letzte bisschen Reserve aus einem System zu kitzeln bleibt ja immer noch die Option wesentliche Elemente des Systems speziell auf die CPU angepasst zu kompilieren. Die im gcc zur Verfügung stehenden Optionen stellen in ihrer Vielzahl schon eine Wissenschaft für sich dar.

Meine Frage ist, lässt sich ein signifikant optimiertes Ergebnis bereits erreichen, in dem man nur "-march=native -O3" über die CFLAGS setzt?
 
-O3 verspricht zwar auf dem Papier das Optimum, in der Realität macht -O3 aber mehr Probleme als es löst. -O2 ist daher definitiv zu bevorzugen und bereitet am Wenigsten (nahezu keine) Probleme.

ABER: Das ganze Optimieren bringt nur etwas, wenn das gesamte System, insbesondere der Toolchain und die grundlegenden Libs, durchgehend optimiert wird. Damit wären wir dann bei einer sourcebasierten Distro wie Gentoo oder Arch, oder einem sourcebasierten OS wie FreeBSD. Willst Du das wirklich?
 
Willst Du das wirklich?
Iiiiiiiija! :D

Im Ernst, mein Ausgangspunkt ist jener Artikel hier:

http://www.phphatesme.com/blog/allg...pilieren-ein-performance-vorteil-oder-mythos/

Ich möchte mich Stück für Stück an diese Thematik herantasten. Alle Beispiele, die ich bisher gefunden habe, sind gespickt mit Parametern, die ich nur sehr aufwendig und schwer nachvollziehen kann.

Da ich mich auf Debian zuhause fühle, war auch mein ursprünglicher Ansatz, dies auf dieser Distro umzusetzen, daher danke für den Hinweis auf die toolchain und die grundlegenden libs. Den Gedanken daran hatte ich bisher "erfolgreich" verdrängt.

Atm bin ich dabei mir einen "Schlachtplan" zurecht zu basteln, nachdem ich vorgehen könnte. Lokale Testsysteme stehen mir hinreichend zur Verfügung, so dass ich den Erfolg jederzeit überprüfen kann.

Die finanziellen Ressourcen unseres Vereins sind begrenzt, Ziel der Sache ist also, ein recht schwachbrüstig ausgestattetes System möglichst effizient zu nutzen - das schließt natürlich die Optimierung des Kernels mit ein. Als Serveradmin einer der ältesten deutschen Warcraft3-Clanligen, muss ich auf dem System eine Reihe von Diensten abbilden und da ist mir jedes Quäntchen, was ich mehr an Leistung herausholen kann, mehr als recht.
 
Last edited by a moderator:
Also im altäglichen Leben wirst du kaum einen Unterschiede merken, selbst
wenn du das gesamte System per Hand aufbaust, z.b. mit LFS oder Gentoo.

Wichtiger sehe ich hier das Optimieren der Ressourcen und das kannst du
halt nur durch Optimale Hardware verbessern.

Aber wie willst du "schwachbrüstige Hardware" aufpeppen??
Du kannst mit "Perfekt" übersetzter Software die Hardware auch nicht
besser machen.

Man könnte aber statt GCC auch ICC verwenden der bringt halt in manchen
Anwendungen 30 % Mehrleistung.

Aber ich würde lieber auf Ordentliche Hardware setzen, wo es möglichst
wenig Nadelöhre gibt.

Sven
 
Aber ich würde lieber auf Ordentliche Hardware setzen, wo es möglichst wenig Nadelöhre gibt.
Das kann ich durchaus nachvollziehen, nur ich kann nicht mehr ausgeben, als auf dem Vereinskonto ist. ATM, reichen die Ressourcen mehr als aus - nur wenn wir wieder mal was Neues hochziehen, könnte es mehr als knapp werden. Und da möchte ich durch Optimierung etwas Reaktionszeit gewinnnen.
 
Da wirst Du allerdings mit Debian und anderen Binary-Distros nicht weiterkommen, denn zum Optimieren gehört auch das Entsorgen nicht benötigter Abhängigkeiten zur Compile-Time und das funktioniert bei Binary-Distros nicht. Damit bist Du wieder bei den ssourcebasierten Distros, also Gentoo und Arch. Zudem musst Du dann genau ergründen, ob und welche Features Du bei jedem einzelnen Paket benötigst und welche Abhängigkeiten diese wiederum nach sich ziehen.
Das ist wochenlange Vorarbeit und insbesondere jede Menge anzueignendes Wissen, bist Du bereit das zu leisten und auch für etwaige Kollegen/Nachfolger zu dokumentieren?

Ich kann Dir aus zwei Jahren Erfahrung mit dem Aufbau einer eigenen sourcebasierten Server-Distro from scratch nur davon abraten.
 
Das ist wochenlange Vorarbeit und insbesondere jede Menge anzueignendes Wissen, bist Du bereit das zu leisten und auch für etwaige Kollegen/Nachfolger zu dokumentieren?

Über der Dokumentation hinsichtlich der Konfiguration des Server hänge ich eh atm, weil wir das Technik-Team (Serveradministration, Scriptentwicklung/-pflege) Anfang kommenden Jahres um ein weiteres Mitglied erweitern. Insofern bin ich grade dabei jedes Paket und alle individuellen Einstellungen zu überprüfen und zu dokumentieren.

Getreu dem Motto - nichts hält länger als ein Provisorium - ist das Thema Doku über die Jahre hinweg sträflich vernachlässigt worden. Im Zuge der Erstellung dieses "Leitfadens" kam halt der Impuls noch ein Stückchen weiterzugehen.

Zum Thema Binary-Distros, Abhängigkeiten usw. ... hmm, yepp das muss ich mir wohl nochmal genauer ansehen. Ich werde auf dem Testsystem einfach mal ausprobieren, wie tief ich gehen muss, um eine signifikante Verbesserung (Performance, Speicherverbrauch) bei einzelnen Diensten zu erzielen bzw. um festzustellen, wieviel Luft da überhaupt drinsteckt.. Wobei der Fokus auf den üblichen 3 Verdächtigen liegt - Apache2/PHP, Postfix + Anhang (SA/ClamAV) und MariaDB.
 
Damit Du mal einen kleinen Vorgeschmack davon bekommst, wie komplex das Ganze werden wird, solltest Du Dir http://www.linuxfromscratch.org/lfs/view/stable/ vollständig zu Gemüte führen. Und dort ist nur das Basissystem ohne jegliche für den Serverbetrieb zusätzlich nötigen Pakete, Patches und Optimierungen beschrieben.

Für den Serverbetrieb kommt noch mindestens http://www.linuxfromscratch.org/hlfs/view/development/ hinzu, sowie etliches aus http://www.linuxfromscratch.org/blfs/view/svn/ und das eigenständige Sammeln und Managen der zusätzlich benötigten Patches.

Ich rate Dir nach wie vor dringend davon ab und empfehle nochmals den Einsatz von Gentoo, Arch oder FreeBSD.
 
Hmm, ich hab' mir das ganze nochmal mit Blick auf Debian angesehen. Mittels apt-build kann ich zwar Pakete aus den Sourcen installieren allerdings ist das wie schon angedeutet wurde nur die halbe Miete. Standardmäßig sind die Pakete ja so eingestellt, dass aller möglicher Balast mitinstalliert/aktiviert wird. Hinzu kommt eine gewisse Fehleranfälligkeit, dass Abhängigkeiten dann doch wieder vorkompiliert installiert werden oder ein unbedachtes apt-get ... ganz fix die bisherige Mühe ruiniert.

Um eine Software vollständig individuell für unseren Zweck optimiert zu kompilieren, müsste ich dann also direkt auf die Original-Sources zurückgreifen und händisch mit dem üblichen Dreisatz vorgehen. Was wiederum das Thema Updates deutlich aufwendiger machen würde.

Der Weg, eine sourcebasierte Distro zu verwenden, erscheint mir daher nur konsequent. Auf den ersten Blick sagt mir das Konzept von Gentoo am meisten zu.
 
Hinzu kommt eine gewisse Fehleranfälligkeit, dass Abhängigkeiten dann doch wieder vorkompiliert installiert werden oder ein unbedachtes apt-get ... ganz fix die bisherige Mühe ruiniert.

Wenn du es sauber machen möchtest, müsstest du nach jedem compile from source anschließend noch erst ein .deb-Package bauen, das du dann über dein eigenes Repositiory via apt installierst, Stichwort: Version Management. Im Vergleich zu einer sourcebasierten Distro wie Gentoo oder den portsbasierten wie Arch oder FreeBSD ist das natürlich ein beträchtlicher zusätzlicher Mehraufwand.

Für mich stellte sich die gleiche Frage übrigens vor gut zwei Jahren. Ich wechselte dann von Redhat zu Gentoo und bin mittlerweile bei FreeBSD angekommen und habe es nicht bereut.
 
Also ich steh tierisch auf Gentoo, muss dir aber aus Erfahrung mit vielen Distris sagen, dass du den Performance-Gewinn kaum merken wirst. Wenn du Performance willst, dann dreh lieber an den entscheidenden Stellen der Hardware, das bringt deutlich mehr. Aber das hat hier ja schon jemand angemerkt.
 
Beim Serverbetrieb merkt man bei einem optimierten Gentoo/Arch/FreeBSD den Vorteil durchaus, insbesondere bei datenbankbasierten Anwendungen und auch kryptografische Anwendungen profitieren nicht unerheblich davon. Und das sind genau die Dinge, die beim Serverbetrieb nie schnell genug sein können und somit schon Optimierungen im Milisekundenbereich erhebliche Auswirkungen haben können.

Für den 0815 privaten Server ist das sicherlich unnötig, aber ab einer halbwegs professionellen Nutzung lohnt sich der Aufwand durchaus.

BTW: Ich würde ebenfalls FreeBSD vorziehen, da bereits das Vanilla-Basissystem einen deutlich kleineren Memoryfootprint und eine höhere Stabilität aufweist, als die üblichen Verdächtigen unter den Linux-Distros.
 
Frech gesagt: Solche Spielereien kann man sich erlauben, wenn man eine zusammengeschworene Gemeinschaft von Admin-Freaks hat, die nichts anderes zu tun haben.

Sobald Du aber mit Fremdfirmen, Fremdsoftware oder gar Support und anderen völlig unüblichen Dingen zu tun hast würde ich mir solche Dinge sehr gut überlegen.

Der Gewinn mag in einigen speziellen Bereichen spürbar sein - im normalen Webhosting- oder Standard-Unternehmens-Server-Alltag kommt der aber normalerweise nicht zum tragen.
 
@marce: Vielleicht nochmal in den Thread einlesen, weil Thema leicht verfehlt?

B2T:

FreeBSD würde mich schon reizen - allerdings wären das dann 2 Schritte mit einmal (Linux -> FreeBSD, Binär-Distro -> sourcebasiert). Da wir das Ergebnis in absehbarer Zeit in die Produktivumgebung ausrollen wollen, werden wir erstmal den Schritt von Debian auf Gentoo unternehmen.

Beim Aufbau der neuen Umgebung werden wir sicher auch Benchmarks durchführen. Ich denke, da werden wir relativ schnell Ergebnisse erhalten, wie viel Potential in der Optimierung steckt. Wenn Interesse besteht kann ich ja dann sukzessive den neu erarbeiteten Leitfaden inkl. Ergebnisse posten.
 
Oki, werd' ich dann zu gegebener Zeit nen Thread unter Projekte aufmachen, da wir das in Form eines Wiki dokumentieren werden. Ziel wird sein, dass wir pro Woche ein Teilthema erstellt, getestet und dokumentiert haben - was dann auch umgehend zur öffentlichen Diskussion freigegeben wird). In Anbetracht der Fülle an Themen (siehe unten), haben wir bis Ende März vermutlich gut zu tun (ganz vorsichtig optimistisch geschätzt). Wenn ich möglichen Diskussionsbedarf noch mit einbeziehe, kommen wir wohl eher Richtung Ende Mai/Juni an.

System
+Remote Basis Installation
+Lernel-Optimierung
+System-Tools
+Systemsicherheit allgemein

Dienste
+OpenSSH
+vsFTP
+Webserver
-Apache 2
-PHP 5 (FastCGI)
-MariaDB
+Mailserver
-Postfix (mySQL-Auth)
-dovecot
-ClamAV
-SpamAssassin
-procmail
+TeamSpeak3
+Subversion

Webanwendungen
+PostfixAdmin
+phpMyAdmin
+RoundCube
+(non public) SMF
+(non public) Ligascript
+(non public) osTicket
 
-ClamAV
-SpamAssassin

Bei den beiden Dingen kommen mir die Tränen in den Augen, gerade wenn es um das Thema "optimiertes Systems" geht. Das sind doch Ressourcenfresser par excellence, oder etwa nicht? Darüber hinaus laufen beide für mich unter der Kategorie "Snake Oil".

Wozu brauchst du den FTP? Reicht da nicht das OpenSSH mit dem built-in sFTP (Stichwort: WinSCP)?

Der Apache wäre für mich auch noch diskussionswürdig. Das ist ja auch so ein Monstrum, von dem man i.d.R. nur ein paar wenige Features nutzt. Wäre z.B. NGINX nicht die bessere Wahl? Um Multi-Hosting geht es hier ja nicht, oder?

+PostfixAdmin
+phpMyAdmin

Geht das nicht auch alles per Shell? ;)
 
Auch wenn ich dem "Projekt" damit eigentlich vorgreife, möchte ich gern dazu Stellung nehmen bzw. ein paar Sachen erläutern. Grundsätzlich - und das ist auch auch explizites Ziel des Projektes - sind wir bereit, das Layout (Softwareauswahl, Konfiguration in jedem einzelnen Detail zu diskutieren). Zusätzlich sei noch vorausgeschickt, das alle Admins ehrenamtlich arbeiten, also neben ihren Job oder Studium, das Projekt betreuen. In gewisser Beziehung haben wir das "Erbe" von warcraft3.de angetreten. (btw, ich habe es genossen, die ursprüngliche vB-DB um 800K Threads erleichtert zu haben - nach ein paar Tagen ungläubigen Entsetzens und dem Anflug eines Aufstandes hat man mir das sogar relativ kommentarlos verziehen :D - nur ich hätte die DB damals nie von den gamigo-Systemen in der vollen Größe herunter und konvertiert bekommen in vernünftiger Zeit).

Zum Szenario:

Ich bin, wie gesagt, für den technischen Betrieb einer der ältesten deutschen Warcraft3 Clanligen zuständig. Damit einher geht die Tatsache, dass meine "Kunden" in erster Linie Gamer (aka Spieler) sind, die mit ernsthafter IT-Sicherheit und Technik vergleichweise wenig am Hut haben. Das betrifft sowohl die Teilnehmer als auch die "Admins" und Redakteure (redaktionelle Begleitung von Spieltagen), welche den Liga-Betrieb organisatorisch durchziehen.

Rechtlich wird das Projekt durch einen eingetragenen Verein (e.V.) vertreten, der rechtlich und finanziell dafür im Hintergrund gerade steht. Die Einnahmen kommen aus Mitgliedsgebühren und ein bisschen Werbung.

Bisher bestand das Technik-Team aus 2 erfahrenen Leuten - in Zukunft aus 3. Problem war, dass was den eigentlichen Serverbetrieb anging nur einer wirklich einen Plan hatte, weil er es selbst eingerichtet und gewartet hat :D Am Ligascript hingegen haben beide Techniker geschraubt.

ich bin also einerseits in der komfortablen Lage, gewisse Dinge diktatorisch festzulegen (Spruch: "Iss' halt so.") andererseits muss ich auf bestimmte Gewohnheiten Rücksicht nehmen, um entsprechende Akzeptanz zu erreichen. Auf Grund des häufigen Wechsels von Leuten im "normalen" Admins-Stab, müssen Standard-Tätigkeiten wie eMail-Postfächer einrichten etc. pp. möglichst einfach und wenig aufwendig zu erledigen sein (quasi halbtrunken im Schlaf).

Daneben laufen auf dem Server noch ein paar private Projekte, wie z.B. mein privates Blog auf Java-Basis (Pebble) sowie Joomla-Seiten (ebenfalls private Sachen/Blogs).

So zu den angesprochenen Punkten ClamAV und SA:

Ich benutze derzeit in Postfix eine vergleichsweise sehr agressive Strategie zur Abwehr von Verbindungen auf den SMTP. Das wäre so mit "normalen" Kunden" nicht möglich, aber wie gesagt, siehe oben ich kann das. Fazit: Ich erledige damit ca. 90% der Spam-Fälle. Das Problem ist, dass wir bestimmte eMail-Adressen exponieren müssen.

Resultat kann sich jeder vorstellen, diese Adressen stehen in fast jeder Spammer-DB. Und aus meiner bisherigen Erfahrung heraus - ich checke ab und zu die Inhalte der Postfächer - sehe ich das ClamAV und insbesondere SA (mit einer ebenfalls recht agressiven Konfig) durchaus ihren Dienst tun.

Fakt ist: im Support-Postfach kommen praktisch seit Monaten und Jahren exakt 0 Spams an und wir haben exakt 0 false positives. Aber die Durchleitung sowie das Ablegen solcher Mails in seperaten Ordnern geben den Admins das Gefühl, dass alles durchkommt und damit nix verloren geht. Auf der anderen Seite sind sie dafür dankbar, dass das Postfach sauber bleibt.

zum Thema FTP:

Atm, setzen wir vsFTP ein und erzwingen sFTP. Den Zugang via WinSCP (SSH) haben wir verworfen aus Sicherheitsgründen, weil wir, das Technik-Team, sehr genau definieren möchten, was User X Y oder Z tut und sieht. Das erschien uns mit vsFTP hinreichend gewährleistet. Außerdem ist halt die Preferenz der Admins und insbesondere der Redakteure, Bilder o.ä., mit Filezilla etc. pp. hochzuladen. Das ist wiederum eine der Anforderungen, die ich erfüllen muss.

zu Postfixadmin und phpMyAdmin:

Ja natürlich geht alles per Shell. Nur unser Datenbank-Konzept für das Ligascript ist schon etwas komplexer. Und es ist für Support-Fälle und sonstige Ungereimtheiten oftmals einfacher, bequem per komfortabler UI nachschauen zu können, ob wir (Script) versagt haben oder ob der Teilnehmer einfach nur was nicht gerafft hat. Selten treten auch Fälle auf, wo wir durchaus händisch reagieren müssen, weil sich der Aufwand, dies via PHP-Script zu realisieren einfach nicht lohnt oder wir dies definitiv nicht wollen (welche der Teilnehmer aus Datenschutzgründen aber maybe durchaus fordern, kann - siehe Ausgangssituation - bevor wir uns auf eine Auseinandersetzung einlassen, erfüllen wir die Wünsche).

Last but not least - sorry für die langatmige Antwort, aber ich denke, das ist notwendig um zu verstehen, warum wir bestimmte Optionen wählen, die professionelle Hoster nie in Betracht ziehen würden. Ich muss den Usern (Admins und Redakteure) eine einfache Möglichkeit zur Verfügung stellen, dass PW zu ändern. Bisher hatten wir dafür Usermin. Nur das Konglomerat aus Webmin + Virtualmin + Usermin möchte ich in Zukunft gern einsparen.
 
Last edited by a moderator:
Back
Top