Analysieren der Leistung eines Linux NFS-Servers

Analysieren der Leistung eines Linux NFS-Servers

Ich möchte unseren NFS-Server analysieren, um mögliche Engpässe in unseren Anwendungen aufzuspüren. Auf dem Server läuft SUSE Enterprise Linux 10.

Ich möchte die folgenden Dinge wissen:

  • Welche Clients greifen auf welche Dateien zu?
  • Lese-/Schreibdurchsatz pro Client
  • Durch andere RPC-Aufrufe verursachter Overhead
  • Wartezeit für andere NFS-Anfragen oder Festplatten-E/A zur Bedienung eines Clients

Ich kenne die verfügbaren Statistiken bereits /proc/net/rpc/nfsdund habe sogar eineBlogeintragsie ausführlich zu beschreiben. Ich suche nach einer Möglichkeit, tiefer zu graben und zu verstehen, welche Faktoren zur Leistung eines bestimmten Clients beitragen. Ich möchte die Rolle analysieren, die der NFS-Server bei der Leistung einer Anwendung in unserem Cluster spielt, damit ich mir Möglichkeiten zur bestmöglichen Optimierung überlegen kann.

Antwort1

Nur eine Idee. Versuchen Sie, den NFS-Verkehr mit Wireshark abzuhören. Vielleicht erfahren Sie, welcher Benutzer auf welche Datei zugegriffen hat:

tshark -R nfs -i eth0

Antwort2

Ich muss sagen, von allen verfügbaren *stat-Dienstprogrammen ist nfsstat bei weitem das schlechteste! Sie können damit eine Reihe von Zählern anzeigen, aber das ist auch schon alles. Wenn Sie sie zweimal anzeigen, müssen SIE herausfinden, um wie viel sich jeder Zähler geändert hat, und wenn Sie die Änderungsrate wissen möchten, müssen Sie durch die Anzahl der Sekunden zwischen den Abtastungen dividieren. Ehrlich gesagt ist nfsstat schon viele Jahre alt, als die Dinge noch ziemlich primitiv waren, und wird jetzt dadurch behindert, dass niemand das Ausgabeformat ändern möchte, weil dies wahrscheinlich viele Dinge kaputt machen würde.

Was die Verwendung von collectl zur Überwachung von NFS betrifft, so liefert es nfsstat-Ausgaben in einem viel einfacher zu lesenden Format, aber was noch besser ist: Sie können es stunden- oder tagelang laufen lassen und die im Hintergrund gesammelten Daten wiedergeben. Was die Anfrage betrifft, was Prozesse tun, kann collectl auch Prozessdaten sammeln, einschließlich der E/A-Menge jedes Prozesses, und diese sogar wiedergeben, wobei die Top-E/A-Benutzer angezeigt werden. Sie können die Top-Funktion auch in Echtzeit verwenden.

Wenn Sie die Themensammlung der Datenträger selbst ansehen möchten, können Sie das auch tun und alles in einer koordinierten Anzeige anzeigen.

Schaut es euch an... -mark

Antwort3

sammeln(vor allem seineNFS-Subsystem) ist ein sehr schönes Dienstprogramm, das für Ihre Analyse nützlich sein könnte, aber esnichtIhrer Anforderungsliste entsprechen. Mir ist kein Linux-Dienstprogramm bekannt, das dies tut.

(Ich möchte hier noch eine Anmerkung hinzufügen, die nicht zum Thema gehört:IstSoftware, die Ihren Anforderungen entspricht: Suns DTrace-basierteAnalytik (pdf)- ist aber leider nicht unter Linux verfügbar. Viele tolle Beispiele finden Sie inBrendan Greggs Blogdie die Fähigkeiten dieses Tools veranschaulichen.)

Antwort4

Meiner Meinung nach verdeutlicht dies genau das Problem mit den heutigen Tools. Hier werden mindestens 3 erwähnt, darunter nfsstat, iostat und iotop. Dann wurden beiläufig Wireshare und nfsreplay erwähnt. Klingt das wirklich nach einer normalen Vorgehensweise? Abgesehen von Wireshark, das eine Kategorie für sich darstellt, würden Sie nicht ein Tool bevorzugen?

Zunächst einmal finde ich die Ausgabe von iostat zwar sehr nützlich, aber mit all den .00 in den Zahlen ist sie zu schwer zu lesen. Collectl meldet genau dieselben Daten, aber in einem viel augenfreundlicher formatierten Format. Sie wissen bereits, was ich von nfsstat halte, und da collectl alle Daten wiedergeben kann, ist kein „Wiedergabe“-Dienstprogramm erforderlich. Was „iotop“ betrifft, kann collect auch Prozesse anzeigen, die nach allen enthaltenen E/A sortiert sind.

Da haben Sie also alles, komplett mit Zeitstempeln. Wenn Sie ein feineres Überwachungsintervall benötigen, können Sie die Abtastung jederzeit auf 0,1 oder 0,5 Sekunden oder einen beliebigen Wert dazwischen reduzieren. Allerdings entsteht dadurch mehr Overhead, wenn Sie Prozesse so schnell überwachen, was bei jedem Prozessüberwachungsprogramm der Fall wäre.

UND der letzte Bonus ist, dass Sie alles, was Sie mit collectl sammeln, in eine Tabelle laden und einfach darstellen können ODER colplot verwenden können, das Teil von collectl-utils ist.

-markieren

verwandte Informationen