Ich habe einige Prozesse mit einem bekannten Namen, die alle in Dateien in einem einzigen Verzeichnis schreiben. Ich möchte die Anzahl der Lese- und Schreibvorgänge für Festplattenblöcke über einen bestimmten Zeitraum ( nicht nur den Dateizugriff) protokollieren , um zu testen, ob eine Parameteränderung die E / A-Menge erheblich reduziert. Ich verwende derzeit iostat -d -p
, aber das ist auf die gesamte Partition beschränkt.
linux
monitoring
io
disk-usage
l0b0
quelle
quelle
Antworten:
Mir ist klar, dass dies sowohl simpel als auch absurd klingen wird, aber wenn Sie die Kontrolle über die betreffenden Apps haben (möglicherweise in einer Testumgebung), können Sie NUR dieses Verzeichnis auf einer eigenen Partition mounten
iostat
usw. darüber und sonst nichts an dieser Stelle.Wenn es sich um physische Laufwerke handelt, können Sie diese mit einem Loopback-Mount à la fälschen
Das würde nicht alle konkurrierenden Festplatten-E / A vollständig entfernen, aber ich bin mir ziemlich sicher
iostat
, dass die Ausgabe spezifischer auf Ihre Bedürfnisse zugeschnitten wäre.quelle
Ich glaube nicht, dass es einen direkten Weg gibt. Eine Möglichkeit, die gewünschten Daten abzurufen , besteht darin, über ein virtuelles Dateisystem , das Zugriffe protokolliert , auf den Verzeichnisbaum zuzugreifen . Loggedfs ist ein solches Dateisystem, obwohl ich nicht weiß, ob es alle Daten anzeigen kann, an denen Sie interessiert sind. (Wenn nicht, wäre dies wahrscheinlich ein bescheidener Codierungsaufwand für diese Daten.)
quelle
Sie können
inotifywait -m DIRNAME
von den inotify-Tools verwenden .quelle
-d
existiert nicht in inotifywait 3.13. Meinst du-m
?-m
mit der Ausnahme, dass es im Hintergrund ausgeführt wird und eine Outfile erfordert.-r
könnte nützlich sein