Grundregeln des Performance-Tunings

© © Itsallgood, Fotolia

Pimpen nach Plan

Tunen nach Kochrezept ist problematisch, weil oft viele individuelle Faktoren in die Rechnung einzubeziehen sind. Aber ein paar Leitlinien für das Performance-Tuning gibt es doch.
Egal, um welchen Dienst es sich dreht, den Benutzern geht es immer zu langsam. Der Schwerpunkt des ADMIN-Magazins 05/2011 verrät, mit welchen Tools man ... (mehr)

Wenn es eine goldene Regel des Tunings gibt, dann lautet sie: Geh planvoll vor! Wer dies und das willkürlich ausprobiert, mal an diesem, mal an jenem Schräubchen dreht, in der Hoffnung, irgendwann werde sich schon zufällig ein günstiger Effekt einstellen, der kommt bestimmt nicht ans Ziel. Denn gerade beim Beschleunigen von Rechnern gilt: Failing to plan is planning to fail. Was allein Erfolg verspricht, ist ein Plan, der sich zum einen auf ein gutes Verständnis der Mechanismen stützt, die es zu beschleunigen gilt, zum anderen auf handfeste Messwerte. Vor diesem Hintergrund durchläuft der Tuner den Kreislauf Messen-Analysieren-Ändern so lange, bis das gewünschte Ergebnis maximiert ist. Dieser Artikel beleuchtet Methodik und Tools.

Messen

Anwender sprechen häufig über subjektive, über gefühlte Performance. Das ist unvermeidlich und deshalb auch berechtigt. Der Admin aber muss sich bemühen, eine Aussage wie "Heute ist wieder alles so langsam …" zu objektivieren. Er muss wissen, was genau wie schnell ist, weil er nur so einen Ansatzpunkt für zielgerichtete Verbesserungen finden kann. Dabei liefert ihm das Performance-Monitoring konkrete Messwerte. Auf zwei Schwierigkeiten stößt er dabei allerdings ziemlich schnell: Erstens: Was soll man messen? Es bieten sich sehr viele Möglichkeiten an. Und zweitens: Was sagt ein bestimmter Messwert aus? Sind 2417 Pakete pro Sekunde gut oder schlecht? Liegt der Messwert im Erwartungsbereich, darunter oder darüber? Markiert er einen Trend?

Der ersten Schwierigkeit wird man am besten Herr, wenn man vom Allgemeinen zum Konkreten absteigt und sich zuerst einen Überblick verschafft, bevor man die Details unter die Lupe nimmt. Liegen zum Beispiel ein paar Gigabyte Hauptspeicher brach, ist es sinnlos, aufwendig den Speicherverbrauch einzelner Funktionen einer Applikation zu untersuchen. Befindet sich die CPU zu 90 Prozent im Leerlauf, braucht man nicht mit einzelnen Takten geizen. In diesen Fällen muss der Engpass – wenn es denn einen gibt – woanders zu finden sein.

Beim zweiten Problem, der Einordnung der Messwerte, hilft es, wenn man ein paar Eckdaten im Hinterkopf hat: Wie schnell kann eine Festplatte oder ein 10-GBit-Netzwerk maximal sein? Vielleicht aber noch wichtiger ist eine Technik, die sich auf die konkrete Anwendung bezieht: Das sogenannte Baselining. Dabei sammelt man über längere Zeit Vergleichswerte aus der Beobachtung der eigenen Applikationen: Welche Antwortzeiten ergeben sich im Normalbetrieb? Wie viele Useranfragen werden üblicherweise pro Zeiteinheit bearbeitet? Und so weiter. Das ermöglicht später hilfreiche Vergleiche: Haben sich die Antwortzeiten tatsächlich verlängert (wenn ja,wie stark?) – oder hat der Anwender nur den Eindruck? Ist die Veränderung plötzlich eingetreten oder schleichend? Ist sie zyklisch? Die Antworten helfen die Stelle zu finden, an der man den Hebel ansetzen muss. Dagegen nützt eine isolierte, schwer einzuordnende Momentaufnahme ohne Vergleichsmöglichkeit weitaus weniger.

Überblick verschaffen

Wer sich einem Performanceproblem nach der Top-Down-Methode nähert, erkennt auf der obersten Ebene drei große Gruppen von Ressourcen, von denen prinzipiell jede zum Nadelöhr werden kann: Die Kapazität der CPU, das Leistungsvermögen des I/O-Systems inklusive des Netzwerks und die Aufnahmefähigkeit des Hauptspeichers. Eine erste Übersicht über die Auslastung dieser Ressourcen liefern generelle Performancetools.

Ein brauchbarer Vertreter der Kategorie Generalistentools fürs Performance-Monitoring ist Nmon [1] (Abbildung 1). Das Werkzeug liefert in komprimierter Form viele relevante Daten zu CPU- oder Speicherauslastung, Filesystemen, Virtual Memory, Kernel-Statistik, Platten-I/O oder Netzwerk. Dabei kann es ein normaler User starten, es benötigt keine Root-Rechte, was oft ein großer Vorteil ist.

Abbildung 1: Mit Nmon kann sich der Anwender seine Performanceübersichten selbst in einem Terminalfenster zusammenstellen. Rootrechte sind nicht nötig.

Bis jetzt leider nur für Windows existiert der Nmon Analyzer [2], der die gesammelten Performancedaten in einem Spreadsheet auswerten hilft und auch grafische Darstellungen erstellt; (ein Freiwilliger, der das auf Visual Basic basierende Tool in eine Open-Source-Version portiert, wäre übrigens willkommen). Daneben existieren Hilfsmittel, um Nmon-Daten in RRD-Datenbanken zu schleusen. Das bewerkstelligen etwa [3] und [4].

Neben Nmon gibt es eine ganze Reihe weiterer Tools, die einen Überblick über die Systemperformance ermöglichen. Zu den breiter aufgestellten gehören beispielsweise Top und seine zahlreichen Derivate. Speziell für das Baselining aber bietet sich ein bestimmtes Kommandozeilentool ganz besonders an: Der System Activity Reporter (Sar).

Sar kann nicht nur ad hoc sehr detaillierte Performancestatistiken ausgeben, die alle relevanten Ressourcen einschließen, sondern es ist darüber hinaus in der Lage, diese Werte auch über längere Zeiträume hinweg zu sammeln und dann automatisch zu Wochen- oder Monatsübersichten zu verdichten. Damit lässt sich bequem ein permanentes Performance-Monitoring einrichten, das seinen Platzbedarf automatisch in Grenzen hält und dabei jederzeit über alle relevanten Parameter auskunftsbereit ist. Zudem gibt es auch für Sar Auswertungstools, beispielsweise das kommerzielle Sarcheck [5], das anhand eines Regelwerks und hinterlegter Schwellwerte die Messungen automatisiert beurteilt und so gezielt Hinweise auf Flaschenhälse nebst Optimierungsempfehlungen liefert (Abbildung 2).

Abbildung 2: Sarcheck produziert auf Wunsch einen HTML-Report, der in einfachem Englisch mit Tabellen und bei Bedarf auch Graphen die Auslastung aller Ressourcen erläutert.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2018