Dies ist ein einfaches Problem, aber das erste Mal, dass ich es tatsächlich beheben musste: Ermitteln, welche spezifischen Dateien / Inodes die Ziele der meisten E / A sind. Ich möchte mir einen allgemeinen Systemüberblick verschaffen können, aber wenn ich eine PID oder TID angeben muss, bin ich damit einverstanden.
Ich würde gerne auf ein strace
Programm verzichten müssen, das auftaucht iotop
. Verwenden Sie vorzugsweise ein Werkzeug in der gleichen Art wie iotop
das, das nach Datei sortiert ist. Ich kann verwenden, um lsof
zu sehen, welche Dateien Mailman geöffnet hat, aber es gibt nicht an, welche Datei E / A empfängt oder wie viel.
Ich habe an einer anderen Stelle gesehen, wo dies vorgeschlagen wurde, auditd
aber ich würde es vorziehen, dies nicht zu tun, da dadurch die Informationen in unsere Audit-Dateien aufgenommen werden, die wir für andere Zwecke verwenden, und dies scheint ein Problem zu sein, das ich untersuchen sollte auf diese Weise.
Das spezifische Problem, das ich gerade habe, ist, dass LVM-Snapshots zu schnell erstellt werden. Ich habe das Problem seitdem behoben, hätte es aber gerne auf diese Weise behoben, anstatt nur ls
alle geöffneten Dateideskriptoren zu überprüfen, /proc/<pid>/fd
um festzustellen, welche am schnellsten wächst.
quelle
fatrace
, das älter ist, so etwas wie das Skript, das ich geschrieben habe, das sollte wurden angeboten, da es allgemeiner verwendbar ist.Antworten:
Es gibt einige Aspekte dieser Frage, die teilweise durch andere Tools behoben wurden, aber anscheinend gibt es kein einziges Tool, das alle Funktionen bietet, die Sie suchen.
iotop
Dieses Tool zeigt, welche Prozesse die meisten E / A verbrauchen. Es fehlen jedoch Optionen, um bestimmte Dateinamen anzuzeigen.
Standardmäßig wird das Gleiche
top
wie bei regulären Prozessen für die CPU-Zeit getan , mit Ausnahme der Datenträger-E / A. Sie können ihn überreden, eine 30.000-Fuß-Ansicht zu erhalten, indem Sie den-a
Schalter verwenden, sodass er im Laufe der Zeit eine Akkumulation nach Prozessen anzeigt.i * tools (inotify, iwatch, etc.)
Diese Tools bieten Zugriff auf die Dateizugriffsereignisse, müssen jedoch speziell auf bestimmte Verzeichnisse oder Dateien ausgerichtet sein. Sie sind daher nicht besonders hilfreich, wenn Sie versuchen, einen nicht autorisierten Dateizugriff durch einen unbekannten Prozess aufzuspüren, wenn Sie Leistungsprobleme debuggen.
Das
inotify
Framework enthält auch keine Angaben zu den Dateien, auf die zugegriffen wird. Mit diesen Tools ist nur die Art des Zugriffs verfügbar, sodass keine Informationen über die Datenmenge verfügbar sind, die hin und her verschoben wird.iostat
Zeigt die Gesamtleistung (Lesen und Schreiben) basierend auf dem Zugriff auf ein bestimmtes Gerät (Festplatte) oder eine Partition an. Es gibt jedoch keinen Einblick, welche Dateien diese Zugriffe generieren.
blktrace
Diese Option ist zu niedrig. Es fehlt die Übersicht darüber, auf welche Dateien und / oder Inodes zugegriffen wird, lediglich die unformatierten Blocknummern.
Fatrace
Dies ist eine Neuerung im Linux-Kernel und eine willkommene Neuerung, daher nur in neueren Distributionen wie Ubuntu 12.10. Bei meinem Fedora 14-System fehlte es 8-).
Es bietet den gleichen Zugriff, den Sie erhalten können,
inotify
ohne auf ein bestimmtes Verzeichnis und / oder bestimmte Dateien abzielen zu müssen.Das Obige zeigt Ihnen die Prozess-ID, die den Dateizugriff ausführt, und die Datei, auf die zugegriffen wird, aber es gibt Ihnen keine allgemeine Bandbreitennutzung, sodass jeder Zugriff von keinem anderen Zugriff unterschieden werden kann.
Also, was ist zu tun?
Die
fatrace
Option ist für die ENDLICHE Bereitstellung eines Tools am vielversprechendsten, mit dem Sie die Gesamtnutzung der Datenträger-E / A anhand der Dateien anzeigen können, auf die zugegriffen wird, anstatt anhand der Prozesse, auf die zugegriffen wird.Verweise
quelle
fatrace
und nicht entwickelt, dass es viel passiert ist. Ich weiß es wirklich zu schätzen, wie Sie die Extrameile gehen, um sicherzustellen, dass die Leute das vollständige Bild verstehen, und ich wünschte, ich könnte mehr tun, als nur zu voten und Kopfgeld zu geben.yum
durchführte, wurden aus irgendeinem Grund die Bibliotheken von python3 geladen. Ich habe einenfile
drauf gemacht und es sieht so aus, als wäre es eine ELF-ausführbare Datei.ldd
zeigt keine Links zupython
und hat es auch nicht getanstrings
. Irgendeine Idee, warum es mit Python3 zu tun hatte?iotop
undiostat
Anrufe erhalten. Auch ich die Python Sache herausgefunden , es sieht aus wie (auf Fedora 18 zumindest) gibt es einen „Power-usage-Bericht“python
Skript soyum
wurde nur auf die Tatsache reagieren , diepython
in dem RPMs Abhängigkeiten ist. Damit ist dieses spezielle Rätsel gelöst.Ich habe noch keine Antwort bekommen, aber ich habe dieses Skript (am Ende) geschrieben und es scheint zu tun, was ich will. Ich habe es nicht auf anderen Systemen getestet und es ist Linux-spezifisch.
Grundsätzlich
strace
dauert es nur 30 Sekunden, filtert nach dateibezogenen Systemaufrufen und versucht, den Dateinamen zu entfernen. Es zählt die Anzahl der Vorkommen dieser Datei instrace
und präsentiert dem Benutzer eine paginierte Zusammenfassung. Es ist nicht perfekt, aber die Anzahl der Systemaufrufe für eine bestimmte Datei hat möglicherweise eine schwache Korrelation mit der Leistung der E / A.Ich habe es noch nicht vollständig getestet, aber wenn es nicht sofort funktioniert, sollte es den Leuten einen Ausgangspunkt bieten. Wenn es weiter ausgearbeitet wird, kann es ratsam sein, dies in eine höhere Sprache wie Python umzuschreiben .
Wenn ich innerhalb einer Woche keine Antwort auf diese Frage bekomme (auch wenn es sich um ein anderes Tool handelt, das nur die E / A eines bestimmten Prozesses zählt), akzeptiere ich dies als meine Antwort für die Nachwelt.
Skript:
quelle
Sie können iWatch mit iWatch verwenden
iWatch ist sehr einfach zu bedienen. Nehmen wir an, Sie möchten die Änderungen im / etc-Dateisystem beobachten und müssen sie nur in der Konsole ausführen
und iwatch teilt Ihnen mit, ob sich in diesem Verzeichnis etwas ändert. Und wenn Sie per E-Mail benachrichtigt werden möchten:
In diesem Fall erhält der Administrator eine E-Mail-Benachrichtigung (möglicherweise können Sie Ihr SMS-Gateway-Konto verwenden, sodass Sie jederzeit und überall sofort alarmiert werden). Und wenn Sie viele unterschiedliche Verzeichnisse überwachen möchten, können Sie eine Konfigurationsdatei verwenden. Diese Konfigurationsdatei ist eine XML-Datei mit einer leicht verständlichen Struktur.
quelle
inotify
richtig? Ich habe gezögert, irgendetwas basierend auf zu verwenden,inotify
da Sie ihm Pfade geben müssen (was im Wesentlichen das ist, wonach ich suche), und ich war besorgt darüber, wie viel Overhead es geben würde, wenn ich einfach alles darunter mache./
Kann dieser Filter nach PID? Ich könnte vorübergehende Langsamkeit tolerieren, wenn es einfach genug ist, herauszufinden, welches Programm dies tut. Die Website hat auch keine Beispielbefehlsausgabe.