Systeme: I/O-Profiling verteilter Anwendungen

Speicherhunger im Profil

Die Auswahl der richtigen Storage-Lösung ist keine einfache Aufgabe. Davor steht die Analyse der I/O-Anforderungen der eingesetzten, oft verteilten Anwendungen. Wir stellen Ihnen für diesen Zweck nützliche Open Source-Programme vor, die sowohl Daten sammeln als auch deren Darstellung und Auswertung ermöglichen.
In der Juni-Ausgabe des IT-Administrator dreht sich alles um den Schwerpunkt 'Monitoring & Dokumentation'. So zeigen wir Ihnen, wie die Netzwerküberwachung in ... (mehr)

Mit immer schneller wachsenden Datenbergen ist Storage eines der zentralen Bereiche der Unternehmens-IT. Bei der Anschaffung von Speichersystemen kommen diverse Aspekte zum Tragen: Performance, Zuverlässigkeit, Zugriffsprotokolle, Skalierbarkeit, Preis oder Stromverbrauch. Wer auf der Suche nach einem Storage-System ist, muss also einige Fragen beantworten. Die wichtigste Frage steht jedoch ganz am Anfang – die nach den Anwendungen, die vom Storage Gebrauch machen. Denn nach diesen richtet sich in erster Linie die Auslegung des Datenspeichers.

Das Erste, was Sie also genau analysieren sollten, sind der I/O-Bedarf und die Zugriffscharakteristik Ihrer Anwendungen. Manche IT-Verantwortliche werden nun entgegnen, dass dies bei Tausenden von Anwendungen vergeblich sei. Allerdings ist es stets möglich, eine Rangliste von Anwendungen aufzustellen, die am wichtigsten sind oder am meisten I/O-Bedarf haben, um dann dort anzusetzen.

Um die I/O-Muster Ihrer Anwendungen zu analysieren, gibt es einige Optionen. Ein offensichtlicher Weg dazu ist, die Anwendung laufen zu lassen und den Storage zu überwachen. Das auf einem kompletten Storage-Cluster zu tun, ist nicht die einfachste Übung, aber ein paar einfache Tools helfen dabei, zum Beispiel aus der Sysstat-Sammlung [1]: Iotop, Iostat (Nfsiostat), Sar, Collectl (Collectd) und Blktrace.

Iotop für den ersten Überblick

Das Iotop-Tool [2] liefert eine ganze Reihe von I/O-Statistiken für ein einzelnes System wie einen Storage-Server. Es protokolliert die komplette Ein-/Ausgabe und schlüsselt sie nach Prozessen auf. Eine Möglichkeit, Iotop in einer verteilten Umgebung einzusetzen, besteht darin, es auf jedem einzelnen Knoten zu starten und dann die Anwendung laufen zu lassen. Sie bekommen dann für jeden Node eine Ausgabedatei. Achten Sie allerdings vor dem Zusammenführen und der Analyse darauf, für jeden Knoten einen eigenen Namen zu verwenden. In den gesammelten Iotop-Ergebnissen suchen Sie sich dann diejenige Anwendung heraus, die Sie interessiert. Auf einem NFS-Server wäre das etwa die I/O-Statistik des Prozesses nfsd.

Iotop gibt allerdings nur einen groben Überblick über die Ein-/Ausgabemuster und verzichtet auf möglicherweise interessante Details. Zum Beispiel lässt sich nicht erkennen, ob die Ein-/Ausgabe einer Anwendung lokal stattfindet oder auf einem Storage-Server. Außerdem erhalten Sie nur einen Anhaltspunkt für den gesamten Durchsatz, aber keine Informationen über die I/O-Operationen (IOPS) einer Anwendung.

Mehr Details mit Iostat

Auch das Iostat-Tool bietet ein Vielzahl von I/O-Statistiken und erlaubt es sogar, die Analyse auf ein bestimmtes Device zu beschränken. Zwar schlüsselt es die Ein-/Ausgabe nicht nach Prozessen auf, bietet aber viel umfangreichere Statistiken als Iotop. Grundsätzlich gibt es zwei Typen von Berichten: Der erste zeigt die CPU-Auslastung, der zweite die Nutzung eines Devices. Der CPU-Report besteht aus den folgenden Informationen – alle Werte werden als systemweiter Durchschnitt über sämtliche Prozessoren hinweg berechnet:

- user: CPU-Auslastung in Prozent im User-Mode (der Anwendungsanteil).

- %nice: Prozentsatz der CPU-Auslastung im User-Mode mit Nice-Priorität.

- %system: Anteil der CPU-Auslastung in Prozent im Kernel-Mode.

- %iowait: Zeit-Anteil, in dem die CPU(s) untätig waren, weil sie auf einen I/O-Request warten mussten.

- %steal: Zeit in Prozent, in der die CPU(s) warten mussten, weil der Hypervisor eine andere VM bediente.

- %idle: Zeit-Anteil, in dem die CPU(s) untätig waren, obwohl sie nicht auf einen I/O-Request warten mussten.

Der zweite Report-Typ enthält alle möglichen Details über die Auslastung eines Devices (eines physischen Geräts oder einer Partition). Wenn Sie auf der Kommandozeile kein Device angeben, gibt Iostat die Werte für alle vorhandenen Devices aus. Typischerweise enthält ein Report die folgenden Werte:

- Device: Gerätename.

- rrqm/s: Anzahl zusammengeführter Lese-Requests pro Sekunde, die dem Device zugestellt wurden.

- wrqm/s: Anzahl zusammengeführter Schreib-Requests pro Sekunde, die dem Device zugestellt wurden.

- r/s: Anzahl der an das Device übergebenen Lese-Requests.

- w/s: Anzahl der an das Device übergebenen Schreib-Requests.

- rMB/s: Pro Sekunde vom Device gelesene Mbytes.

- wMB/s: Pro Sekunde auf das Device geschriebene Mbytes.

- avgrq-sz: Durchschnittliche Größe (in Sektoren) der Requests.

- avgqu-sz: Durchschnittliche Länge der Request-Warteschlange.

- await: Durchschnittliche Zeitdauer in Millisekunden, die die Bearbeitung eines I/O-Requests benötigt hat. Schließt die Zeit in der Queue und die Zeit zur Bearbeitung ein.

- svctm: Durchschnittliche Zeitdauer zur Bearbeitung eines I/O-Requests (in Millisekunden).

- %util: Prozentsatz der CPU-Zeit, während der I/O-Requests an das Device geschickt wurden. Sättigung tritt ein, wenn sich dieser Wert 100 Prozent nähert.

Im Vergleich mit Iotop verrät Iostat mehr Details, aber eben nur summarisch und nicht nach Prozessen aufgeschlüsselt. Außerdem bezieht es die Ergebnisse auf ein Device und nicht auf einen Mountpoint. Häufig ist es aber so, dass Anwendungen in ein gemountetes Verzeichnis schreiben und nicht auf ein bestimmtes Gerät. Dann sollten Sie Iostat besser auf dem entsprechenden Server einsetzen als auf dem Client, der die Anwendung ausführt. Ein weiteres Tool der Sysstat-Sammlung ist Nfsiostat, das dazu dient, die Performance von NFS-Servern zu untersuchen. Es ist für den Einsatz auf NFS-Clients gedacht und produziert die gleiche Ausgabe wie Iostat.

Bild 1: Der Aufruf von I/O-Funktionen (Read, Write, Lseek, Open, Close) der analysierten Anwendungen mit Strace

Ähnliche Artikel

comments powered by Disqus
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

Ausgabe /2023