Wie kann ich die am häufigsten verwendeten E / A-Dateien auflisten?

11

Meine Dokumentenverwaltungssoftware führt viele E / A-Vorgänge aus und ich möchte wissen, auf welche Dateien am meisten zugegriffen wird.

Gibt es ein Linux-Tool, mit dem ich alle paar Sekunden die Liste der am häufigsten verwendeten E / A-Dateien wie iotop, jedoch für Dateien, erhalten kann?

Das könnte so aussehen:

$ thetool
THRPUT   R/W/SWP FILE
40MB/s   write   /usr/alfresco/repo/1283421/1324928.doc
12MB/s   read    /usr/alfresco/cache/3928dh29f8if
11MB/s   read    /tmp/239398hf2f024f472.tmp

Ich schaute in den man - Seiten von iotop, lsof, straceund sie scheinen nicht ein solches Feature zu bieten.

Nicolas Raoul
quelle
Sie könnten einen Postprozessor schreiben, um diese Informationen von 'strace' zu erhalten, aber soweit ich weiß, gibt es kein solches Tool. (Ein solches Tool würde Operationen verpassen, die über 'mmap' stattfanden.)
David Schwartz

Antworten:

2

Ich denke, Ihre Metrik "Anzahl der Bytes" ist die falsche. Betrachten Sie zwei Zugriffe. Man liest 10 MB aus einer Datei. Der andere liest jedes 512. Byte der Datei für die ersten 10 MB. Die "Anzahl der Bytes" ist beim ersten Zugriff 512-mal höher als beim zweiten. Beide werden das E / A-Subsystem jedoch genau gleich belasten.

Wenn Sie "Anzahl der Operationen" akzeptieren können, die ungefähr so ​​gut oder so schlecht ist wie "Anzahl der Bytes", dann haben Sie etwas, das Sie tatsächlich messen können. Das inotifywatchProgramm macht das und es ist wahrscheinlich Teil des inotify-toolsPakets Ihrer Distribution .

Sie erfahren sofort, welche Dateien den Großteil der Zugriffe ausmachen, und können wahrscheinlich Ihr eigentliches Problem lösen.

David Schwartz
quelle
iotop verwendet MB / s als Metrik. Ist iotop falsch? +1 für Ihren inotifywatch-Vorschlag ist das Beispiel auf der Manpage genau das, was ich brauche und was ich in meiner Frage beschrieben habe. Danke vielmals!
Nicolas Raoul
Richtig, aber 'iotop' kann keine Dateien identifizieren, sondern nur Geräte blockieren. Es kann Ihnen also helfen, den Problemprozess und / oder das problematische Dateisystem / Gerät zu identifizieren, aber nicht, auf welche Dateien zugegriffen wird. Möglicherweise müssen Sie Teile aus verschiedenen Werkzeugen zusammensetzen.
David Schwartz
Hum, interessant, danke! Ich spiele jetzt mit inotifywatch und werde prüfen, was ich tun kann.
Nicolas Raoul
0

Zunächst zur Verdeutlichung: Es gibt keine "E / A-verbrauchenden Dateien" . Dateien sind passive Objekte. Es sind Programme , die E / A auslösen (normalerweise durch Lesen / Schreiben von Dateien) und mehr oder weniger häufig auf Dateien zugreifen können. Der Durchsatz, den Sie in Bezug auf Dateien erwähnen, hätte also eigentlich nicht viel Sinn. Eine nützliche Information zu Dateien könnte sein, wie oft auf sie zugegriffen und sie geändert werden. Dies kann mit notifywait -m /some/file/or/directory(von inotify-Tools ) oder einem komplexeren System wie FAM oder Gamin überwacht werden .

rozcietrzewiacz
quelle
Ich würde diesen "Durchsatz" (ein anderes Wort könnte angemessener sein, entschuldigen Sie mein Englisch) als die Anzahl der Bytes beschreiben, die während einer Sekunde aus / in eine bestimmte Datei gelesen / geschrieben werden (Summe für jeden Prozess, der währenddessen auf die Datei zugegriffen hat zweite). Ich hoffe es macht mehr Sinn. inotifywait, fam, gamin sag mir leider nur "Datei X wurde geändert / gelesen", was interessant ist, aber nicht das, wonach ich suche.
Nicolas Raoul