Wie kann überwacht werden, in welche Dateien unter Linux viele Daten geschrieben werden?

1775
Johannes Ernst

Ich kann die E / A mit Tools wie iotop überwachen. Damit kann ich feststellen, welche Prozesse wie viel I / O leisten.

Nun möchte ich wissen, in welche Dateien diese Prozesse all diese Daten schreiben. Wie würde ich das machen?

Etwas wie "OK, ich weiß, dass Tomcat eine Menge E / A-Operationen durchführt. Welche Dateien lesen / schreiben sie hauptsächlich von / bis"?

1
Gibt 'iotop -o' Ihnen diese Informationen nicht? Larssend vor 8 Jahren 0
Nicht dass ich sehe. Es gibt mir die Prozesse / Threads und die Gesamtstatistiken, aber nicht die Namen der Dateien. Johannes Ernst vor 8 Jahren 0

1 Antwort auf die Frage

1
Larssend

Ich kenne zwei Möglichkeiten, um solche Informationen zu erhalten.

  1. Manuell verwenden lsof.
    Das gute alte lsofkann Ihnen zeigen, auf welche Dateien ein Prozess oder ein Thread sowie einige andere Informationen zugreifen. In iotop -o, gucken Sie zu und notieren Sie sich den TID(Thread-ID) -Wert des Prozesses oder Threads, den Sie untersuchen müssen. Dann schließe iotopund renne lsof -p [pid/tid]. Wenn Sie die Ausgabe sortieren müssen, leiten Sie sie an sort. Zum Beispiel lsof -p [pid or tid] | sort -n -k 7,7 -rwird die Ausgabe lsofnach der siebten Spalte ( SIZE/OFF) in umgekehrter Reihenfolge sortiert (größte bis kleinste).

  2. Verwenden fatrace.
    Diese Neuerung in Linux ähnelt der inotifyAusnahme, sie zielt jedoch nicht auf bestimmte Dateien / Verzeichnisse ab. Es zeigt Ihre zusammengefasste Festplatten-E / A basierend auf Dateien, auf die zugegriffen wird. Abhängig von Ihrer Distribution haben Sie möglicherweise Zugriff auf dieses kleine Programm in vorkompilierter, ausführbarer Form. Die älteste Distribution, die fatracein ihren offiziellen Repositories verfügbar ist, die ich kenne, ist Ubuntu 12.04. Debian 7, das ich verwende, hat es nicht.

Diese scheinen mir zu sagen, auf welche Dateien mein Prozess zugreift, aber nicht, in welche dieser Dateien alle Daten geschrieben werden. Die "Größe" in lsof scheint die Dateigröße zu sein, NICHT die Rate, mit der der Prozess in die Datei schreibt. In http://manpages.ubuntu.com/manpages/wily/man1/fatrace.1.html sehe ich überhaupt nichts bezüglich Größe / Rate. Johannes Ernst vor 8 Jahren 0