Ich möchte ein speicherintensives Programm ausführen und dessen Speichernutzung über einen längeren Zeitraum verfolgen. Das Programm endet wenige Sekunden nach dem Aufruf.
Diese vorherige Frage schlug das sysstat- Paket vor. Während sein pidstat
Dienstprogramm teilweise das tut, was ich will, kann es meine 2 Bedürfnisse nicht erfüllen:
- Es akzeptiert einen minimalen Intervall von
1s
, aber ich möchte mit einer kürzeren Granularität messen. (0.1s
Sollte in Ordnung sein) - Es wird nur ein vorhandener Prozess verfolgt, während ich nicht immer anwesend sein kann, um die PID zu kopieren und einzufügen.
Gibt es einige alternative Skripte / Dienstprogramme, um die Aufruffunktion zu verbessern?
/proc/$PID/statm
anzeigen), und dann 100 ms schlafen und wiederholen. Warum kann man einfach nicht hält die PIDs zugeordnet werfenstatm
durchcat
, vielleicht einige regex von den extra / nicht benötigten Werten Filter verwenden, und nur tunsleep 0.01
? Einige Betriebssysteme erlauben keinesleep
Werte unter einer Sekunde. In diesem Fall müssten Sie die Python-Routetime
einschlagen (und stattdessen die integrierte Bibliothek von Python verwenden, um in den Ruhezustand zu wechseln).Antworten:
Dies sollte tun, was Sie brauchen. Es erhält die Informationen von
/proc/$PID/statm
und druckt (vonman procfs
):Das Drehbuch:
Anschließend können Sie das Skript aufrufen und ihm als Eingabe einen Prozessnamen geben. Beispielsweise:
ANMERKUNGEN:
quelle
man
, ich weiß nicht, warum Ihre Bearbeitung abgelehnt wurde.Nach Jahren habe ich festgestellt, dass valgrind (auch) ein Werkzeug dafür hat:
Hinweis: Valgrind kann mehr als nur beobachten: Es muss Code injiziert und eine Momentaufnahme des Speichers erstellt werden. Dies kann die Genauigkeit der Statistiken beeinträchtigen.
quelle