2016-11-26 1 views
1

Ich versuche ein Projekt zu optimieren und möchte analysieren, wie effizient das Projekt ist, indem ich I/O betrachte. Das Projekt betrifft nur Dateien und Verzeichnisse in einem lokalen Verzeichnis, das die Dinge ein wenig einfacher macht. Nehmen wir an, je weniger die Anzahl der E/A-Operationen (lassen Sie uns dies im Moment gehen), desto besser, gibt es eine Möglichkeit, alle Dateisystemoperationen zu überwachen oder einfach zu zählen, wenn ein Prozess A beginnt und wenn Prozess A endet ? Gibt es Tools, mit denen Sie dies tun können? Ich bin auf MacOS, würde aber versuchen, etwas auf * nix oder MacOS zu arbeiten.Zähle alle Dateisystemoperationen in einem Verzeichnis über einen bestimmten Zeitraum hinweg

Wie geht das richtig? Wie analysiert man die Performance von Anwendungen basierend auf lokalen Dateisystem-I/O?

Dies geschieht eine node.js Anwendung (kein Server though)

Antwort

3

Ja sein, das Werkzeug vorhanden ist. Es ist strace.

Unter OSX scheint das entsprechende Werkzeug dtruss zu sein.

Jeweils strace und dtruss unterstützen den -c Switch. Unter strace meldet dieser Switch "Zeit, Anrufe und Fehler für jeden Systemaufruf und meldet eine Zusammenfassung beim Beenden des Programms." Auf dtruss "druckt es Systemaufruf zählt".

Der -c Schalter könnte Ihnen alles geben, was Sie verlangen, aber studieren Sie die Manpages trotzdem; Sie könnten Sie dazu inspirieren, sich auch andere Daten anzusehen.

Beispiele:

strace -o /tmp/strace.out -e trace=file,open,close,read,write /bin/echo hello 
grep -c '^write' /tmp/strace.out 
$ strace -c -e trace=file,open,close,read,write /bin/echo hello 
hello 
% time  seconds usecs/call  calls errors syscall 
------ ----------- ----------- --------- --------- ---------------- 
36.47 0.000031   10   3   open 
21.18 0.000018   6   3   3 access 
17.65 0.000015   15   1   write 
11.76 0.000010   2   5   close 
    7.06 0.000006   6   1   execve 
    5.88 0.000005   5   1   read 
------ ----------- ----------- --------- --------- ---------------- 
100.00 0.000085     14   3 total 
+1

Ich denke, das erklärt es: http://stackoverflow.com/questions/174942/how-should-strace-be-used –

+0

Ich denke 'mmap' aufgenommen werden sollten. – CharlesLiuChina

1

inotify/inotifywatch auch für diesen Zweck verwendet werden könnten.

Dies ist ein Hook auf Kernel-Ebene, der zum Starten der Dateisystemüberwachung verwendet werden kann. Es ist spezifisch für Linux.

ref: https://linux.die.net/man/7/inotify

Verwandte Themen