Filigranarbeiten

Frei nach dem Motto: „Egal, was die Applikation auch macht, Moore’s Law wird es schon richten“, hat sich in den vergangenen Jahren in der IT ein enormer Glaube an die Leistungsmöglichkeiten moderner Hardware entwickelt. Eine auf den Einsatzzweck hin optimierte Abstimmung zwischen Hardware und Betriebssystem kann jedoch durchaus (stille) Leistungsreserven aktivieren - eine Aufgabe, der Linux-Distributoren mit ihrem generelleren Ansatz nur bedingt nachkommen können.

In Pocket speichern vorlesen Druckansicht 35 Kommentare lesen
Lesezeit: 6 Min.
Von
  • Eduardo Ciliendo
Inhaltsverzeichnis

Nicht selten versuchen Systemadministratoren, geforderte Antwortzeiten und Leistungsdaten mit einem größeren System zu erreichen. Das böse Erwachen kommt meist postwendend, wenn sie feststellen müssen, dass das neue 16-Prozessor-System doch nicht 16-mal schneller ist als die betagte Maschine mit nur einer CPU. Gerade die ersten EDV-Systeme können als gutes Beispiel dienen. Bei diesen waren die Systemressourcen derart beschränkt, dass zum Erreichen der optimalen Rechenleistung Hardware, Betriebssystem und Applikation perfekt aufeinander abgestimmt werden mussten.

Heute erledigen Linux-Server längst nicht mehr nur einfache Aufgaben, sondern wickeln zusehends auch geschäftskritische Anwendungen ab. Hierbei rücken Leistungsüberlegungen, neudeutsch Performance, immer mehr in den Blickpunkt der Systemarchitekten und -engineers. Doch gerade in dieser Hinsicht stellt die Offenheit des freien Betriebssystems die Betroffenen vor besondere Herausforderungen. Proprietäre Unix-Derivate sind oftmals auf eine bestimmte Hardwarearchitektur und einen eng umrissenen Einsatzzweck hin optimiert. Linux hingegen läuft auf einer Vielzahl von Architekturen, vom Embedded System bis hin zum Supercomputer.

Obwohl Linux-Distributoren ihr System auf einen Verwendungszweck hin optimieren, liegt es doch letzten Endes beim Systemadministrator, das Gespann aus Hardware und Betriebssystem möglichst optimal auf den jeweiligen Einsatzzweck einzustellen. Hierbei zeigen sich aber auch die großen Vorteile eines offenen Betriebssystems: Linux bietet dem Systemspezialisten eine Fülle von Einstellmöglichkeiten - wo sonst kann man selbst den Kern des Betriebssystems seinen Anforderungen anpassen.

Mehr Infos

Aufbau des Tutorials

Dieser erste Teil des Linux-Tuning-Tutorials befasst sich mit generellen Bemerkungen und Optimierungsmaßnahmen. In der Ausgabe 2/2006 wird sich der zweite Teil des Tutorials um die schnellen Systemkomponenten Hauptspeicher und Prozessor kümmern. Im darauf folgenden Monat dreht sich im dritten und letzten Teil alles um die langsameren Subsysteme Netzwerk und Festplatte .

Vor dem eigentlichen Einstieg in die Materie noch einige kurze Bemerkungen in eigener Sache („Disclaimer“): Interessenten sollten jegliche Optimierungsmaßnahmen an einem nicht-produktiven System testen. Die Tuning-Parameter, die dieses dreiteilige Tutorial bespricht, basieren auf Benchmarks und Testresultaten, es kann aber immer wieder vorkommen, dass ein spezifischer Parameter im Umfeld des Lesers einen gegenteiligen Effekt hat.

Aus diesem Grund sollten Sie jeden Parameter entsprechend der spezifischen Umgebung testen. Oder anders gesagt: Gäbe es einen Parameter, der in jedem Fall eine Leistungssteigerung bringt, so hätte dieser vermutlich direkt Einzug in den Quellcode gehalten. Generell sollte man sich darauf einstellen, dass Optimierungen am Betriebssystem keine Wunder vollbringen können - die Physik lässt sich nun mal nicht austricksen. So wird auch bei allem I/O-Elevator-Tuning im dritten Teil ein System nicht mehr als die statistisch zu erwartenden 35 MByte/s auf eine handelsübliche SCSI-Festplatte schreiben können. Abschließend sei erwähnt, dass bei der Fülle von Optionen leider nicht jeder Parameter Einzug in dieses Tutorial halten kann, da dies zweifelsohne den Rahmen sprengen würde.

Aus diesem Grund beschränkt es sich auf die Optionen mit dem größtmöglichen positiven Einfluss bei minimalem Implementierungsaufwand. So werden zwar die Kernelparameter in /proc Thema sein, nicht aber Änderungen am Kernelquellcode.

Leistungsoptimierung, egal ob eines Rasenmähers oder eines Linux-Servers, sollte stets nach folgendem Dreischritt erfolgen: Verstehen, Messen, Optimieren, wobei die beiden Letzteren als iterativer Prozess zu verstehen sind, bis das System die gewünschte Leistung erbringt.

Generell ist das Verstehen des Gesamtsystems der wichtigste, aber auch der komplexeste Aspekt im Prozess der Systemoptimierung. Wichtig ist dabei, zu verstehen, dass man stets das Gesamtsystem, bestehend aus Hard- und Firmware, Treiber, Betriebssystem sowie Applikation, betrachten muss. Ein 2-Wege-Server wird eine serialisierte Batch-Verarbeitung nicht doppelt so schnell erledigen wie ein Uniprozessorsystem, und auch der beste Fileserver kann über eine 10-MBit-Half-Duplex-Netzanbindung nur dürftige Performance liefern.

Da das Verstehen eines Servergesamtsystems mit den verschiedensten Komponenten wie Prozessor, Cache, Firmware, Treiber, Betriebssystem, Applikation, Netzwerk und Client aber derart breit gefächert und komplex ist, sei an dieser Stelle nur auf Artikel in früheren Ausgaben der iX und in der Fachliteratur verwiesen. Eine Auswahl von relevanter Literatur und Internet-Quellen findet sich am Ende dieses Artikels.

Glücklicherweise können sorgfältige Messungen die detaillierte Kenntnis jeder Systemkomponente zumindest partiell ersetzen. Man muss also beispielsweise nicht immer verstehen, warum eine Datenbank 64-kByte-Blöcke vom Plattensubsystem liest, aber man muss messen können, dass sie es tut, um beispielsweise die Segmentgröße des SAN oder des SCSI-Controllers anzupassen. Linux bietet zur detaillierten Messung der Systemleistung hervorragende Bordmittel. Darüber hinaus existieren von vielen gängigen Unix-Werkzeugen Portierungen für Linux. Eine Auswahl dieser Messwerkzeuge werden die nächsten beiden Teile dieses Tutorials genauer beleuchten.

Als Einstieg in die Materie der Linux-System-Optimierung soll es um allgemeine Maßnahmen zur Leistungssteigerung eines Linux-Servers gehen. Idealerweise beginnt dieser Prozess noch vor der Bestellung des Systems beim jeweiligen Hardwarelieferanten. Leider sieht die Realität meist anders aus. Oft wird der Systemadministrator erst herbeigerufen, um einen kritischen Leistungsengpass bei einem produktiven System zu beheben. Hat der Systemspezialist das große Glück, dass er mit der Optimierung bereits bei der Installation beginnen kann, sollte er auf die nun folgenden Punkte achten.

Zwischen den Applikationen und der Hardware beeinflussen mehrere Faktoren die Systemleistung (Abb. 1).

Wie die Grafik zur Systemarchitektur (Abb. 1) zeigt, besteht ein Server aus diversen Komponenten, die allesamt die Leistung des Gesamtsystems beeinflussen. Auch wenn sich dieser Artikel lediglich mit den Spezifika des Betriebssystems beschäftigt, darf man nicht vergessen, dass die anderen Elemente einen ebenso zentralen Beitrag zur Leistung beitragen. Nicht selten kann eine neue Programmbibliothek die Performance des Systems erheblich verbessern.

Wie eingangs gesagt, können die vorgestellten Optimierungsschritte keine Wunder vollbringen. So ist es beispielsweise beim Disksubsystem von größter Wichtigkeit, dass die Hardware den Anforderungen entspricht. Generell sollte bei der Verwendung von RAID-Platten-Systemen ein Hardware-RAID-Controller zum Einsatz kommen. Dies vereinfacht die Verwaltung, erhöht die Datensicherheit und entlastet das Prozessorsubsystem. Vorsicht ist aber bei RAID-Controllern im Einstiegssegment geboten. Bei diesen kann die Low-End-Hardwareimplementierung durchaus eine schlechtere Leistung als ein Software-RAID liefern. Des Weiteren sollte man beim Design von Disksubsystemen für leistungshungrige Anwendungen ein besonderes Augenmerk auf die Anzahl physischer Spindeln beziehungsweise Festplatten richten. Generell gilt: je mehr Platten, desto größer die zu erwartende I/O-Leistung.

Der vollständige Artikel in der Printausgabe befasst sich darüber hinaus unter anderem mit Fragen nach 32- oder 64-Bit-Kerneln, zur Distribution, Partitionierung oder Paketausstattung des Systems.

Mehr Infos

iX-TRACT

  • Mit dem zunehmenden Linux-Einsatz in unternehmenskritischen Bereichen rücken bei Linux-Servern verstärkt Leistungsüberlegungen in das Blickfeld der System-verantwortlichen.
  • Im Gegensatz zu proprietären, meist auf eine definierte Hardwareumgebung abgestimmten Unix-Varianten führt die Vielfalt der unterstützten Hardware beim freien Betriebssystem zu Besonderheiten im Systemverhalten.
  • Tipps zur Messung des Systemverhaltens soll die Optimierung für den täglichen Gebrauch bei Serversystemen veranschaulichen.
  • Nicht immer entspricht die Wirkung der Optimierungsmaßnahmen den Erwartungen und Vorstellungen der Anwender.

(avr)