Ich möchte unseren NFS-Server analysieren, um mögliche Engpässe in unseren Anwendungen aufzuspüren. Auf dem Server wird SUSE Enterprise Linux 10 ausgeführt.
Die Art von Dingen, die ich wissen möchte, sind:
- Auf welche Dateien wird von welchen Clients zugegriffen
- Lese- / Schreibdurchsatz auf Client-Basis
- Durch andere RPC-Aufrufe verursachter Overhead
- Wartezeit für andere NFS-Anforderungen oder Festplatten-E / A, um einen Client zu bedienen
Ich weiß bereits über die verfügbaren Statistiken Bescheid /proc/net/rpc/nfsd
und habe sogar einen Blog-Beitrag geschrieben , der sie ausführlich beschreibt. Was ich suche, ist eine Möglichkeit, tiefer zu graben und zu verstehen, welche Faktoren zur Leistung eines bestimmten Kunden beitragen. Ich möchte die Rolle analysieren, die der NFS-Server für die Leistung einer Anwendung in unserem Cluster spielt, damit ich mir überlegen kann, wie ich sie am besten optimieren kann.
linux
performance
nfs
Kamil Kisiel
quelle
quelle
Antworten:
Nur eine Idee, versuchen Sie, NFS-Verkehr mit Wireshark zu schnüffeln. Könnte Ihnen sagen, welcher Benutzer auf welche Datei zugegriffen hat:
quelle
Ich muss sagen, von all den verschiedenen * stat-Dienstprogrammen, die einem zur Verfügung stehen, ist nfsstat bei weitem das Schlimmste! Es gibt Ihnen die Möglichkeit, eine Reihe von Zählern zu betrachten, aber das ist alles. Wenn Sie sie sich zweimal ansehen, müssen Sie herausfinden, um wie viel sich jeder Zähler geändert hat, und wenn Sie die Änderungsrate ermitteln möchten, müssen Sie sie durch die Anzahl der Sekunden zwischen den Abtastwerten dividieren. Um ehrlich zu sein, stammt nfsstat aus vielen Jahren, als die Dinge noch ziemlich grob waren, und wird jetzt von niemandem behindert, der das Ausgabeformat ändern möchte, da es wahrscheinlich viele Dinge kaputt machen würde.
Mit collectl können Sie nfs überwachen. Die Ausgabe von nfsstat ist viel einfacher zu lesen. Was aber noch besser ist, Sie können es stunden- oder tagelang laufen lassen und die im Hintergrund gesammelten Daten wiedergeben. In Bezug auf die Anforderung, zu sehen, welche Prozesse ausgeführt werden, kann collectl auch Prozessdaten erfassen, einschließlich der Anzahl der E / A, die jeder Prozess ausführt, und diese sogar wiedergeben, um die wichtigsten E / A-Benutzer anzuzeigen. Sie können die Top-Funktion auch in Echtzeit verwenden.
Wenn Sie das Disketten-Thema selbst sehen möchten, können Sie dies auch tun und alles in einer koordinierten Anzeige anzeigen.
Check it out ... -Marke
quelle
collectl (insbesondere das NFS-Subsystem ) ist ein sehr nützliches Dienstprogramm, das für Ihre Analyse nützlich sein kann, aber nicht Ihrer Anforderungsliste entspricht. Mir ist kein Linux-Dienstprogramm bekannt, das dies tut.
(Bitte lassen Sie mich diesen nicht themenbezogenen Hinweis hinzufügen: Es gibt Software, die Ihren Anforderungen entspricht: DTrace-basierte Analysen von Sun (pdf) - leider nicht für Linux verfügbar. In Brendan Greggs Blog finden Sie viele großartige Beispiele, die dies veranschaulichen die Fähigkeiten dieses Tools.)
quelle
Schauen Sie sich nfsstat an. Es zeigt nicht alles, was Sie wollen, aber zumindest eine gute Teilmenge.
http://linux.die.net/man/8/nfsstat
quelle
Meiner Meinung nach hebt dies genau das Problem mit den heutigen Werkzeugen hervor. Hier werden mindestens 3 erwähnt, einschließlich nfsstat, iostat und iotop. Dann wurde immer wieder von Wireshare und NFSreplay gesprochen. Klingt das wirklich nach einer normalen Vorgehensweise? Abgesehen davon, dass wireshark eine eigene Kategorie hat, bevorzugen Sie nicht 1 Tool?
Obwohl ich die Ausgabe von iostat für sehr nützlich halte, ist es für Opener zu schwierig, mit all diesen .00 in den Zahlen zu lesen. Collectl meldet die exakt gleichen Daten, formatiert sie jedoch augenschonender. Sie wissen bereits, was ich von nfsstat halte, und da collectl alle Daten wiedergeben kann, ist kein Dienstprogramm zum Wiederholen erforderlich. Was 'iotop' betrifft, kann collect auch Prozesse anzeigen, die nach E / A sortiert sind.
Dort haben Sie auch alles, einschließlich Zeitstempel. Wenn Sie ein feineres Überwachungsintervall benötigen, können Sie die Abtastung immer auf 0,1 oder 0,5 Sekunden oder irgendetwas dazwischen zurückdrehen, obwohl Sie mehr Overhead erzeugen, wenn Sie Prozesse so schnell überwachen, wie dies bei jedem Dienstprogramm zur Prozessüberwachung der Fall wäre.
UND der letzte Bonus ist alles, was Sie mit collectl sammeln, das Sie in eine Tabelle laden und einfach plotten ODER colplot verwenden können, das Teil von collectl-utils ist.
-Kennzeichen
quelle
Vielleicht möchten Sie es
nfswatch
unter http://nfswatch.sourceforge.net versuchenBeispiele für die Ausgabe finden Sie unter http://prefetch.net/blog/index.php/2009/06/16/monitoring-nfs-operations-with-nfswatch/
nfswatch
ist ein bisschen wietop
(obwohl ich nicht sicher bin, ob es einen Batch-Modus gibt). Sobald es ausgeführt wird, können Sie die Anzeige ändern, indem Sie eine Taste drücken (z. B. "c", um NFS-Clients anzuzeigen, die Ihren NFS-Server verwenden).In meinen kurzen Tests
nfswatch
scheint es jedoch nicht mit NFSv4 zu funktionieren.quelle
Ich habe im Moment keine besseren Antworten, aber Sie können Disk IO ziemlich genau mit verfolgen
Es gibt sehr nützliche Zahlen, insbesondere die durchschnittliche Warteschlangengröße und die Wartezeit (in ms) für Ihre E / A. Es lässt sich leicht erkennen, ob es sich bei Ihren Festplatten um einen Engpass handelt und ob es sich um eine E / A-Anzahl oder einen Durchsatz handelt.
Dann mit
Sie sehen die Clientverbindungen und die von jedem Client übertragenen Bytes in Echtzeit. Schleife für kontinuierliche Daten. Es wäre ziemlich einfach, ein Skript zu erstellen, das kontinuierliche Daten liefert ... ich arbeite daran :)
Um IO pro Prozess zu erhalten, können Sie jetzt das ausgezeichnete iotop verwenden . Sie müssen jedoch noch einen Weg finden, um nfsd-Prozesse mit den Clients abzugleichen.
Ich weiß nicht, auf welche Dateien von welchem Client zugegriffen wird. Tatsächlich werden Dateien, die aktuell von einem NFS-Client gelesen / geschrieben werden, nicht einmal in der lsof-Ausgabe angezeigt.
Verwenden Sie watch -d, um den Status des Netzes zu erweitern und zu sehen, wie sich die Dinge ändern und nach Host sortieren
quelle
Vielleicht möchten Sie nfsreplay ausprobieren. Es könnte Ihnen helfen, herauszufinden, was passiert. Vielleicht finden Sie auch die Informationen und Links hier nützlich
quelle