Speicherverbrauch messen von os.system("<program>

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
paulMaier
User
Beiträge: 2
Registriert: Donnerstag 7. Februar 2008, 13:26

Donnerstag 7. Februar 2008, 17:58

Hallo liebe Python-Gemeinde,

ich bin auf der Suche nach einem Speichermonitor für einzelne Aufrufe der Art

Code: Alles auswählen

os.system("program|skript|etc.")
Der Hintergrund: der Speicherverbrauch eines in C implementierten Algorithmus soll gemessen werden. Zwar kann ich in den C-Code auch entsprechende Ausgaben einbauen (was ich teils schon getan habe), die dann später geparst werden. Aber ich hätte gerne auch eine externe Messung, die den gesamten Verbrauch anzeigt.

Es existiert bereits eine Lösung von einem gewissen Pádraig Brady, die den Speicherverbrauch von laufenden Prozessen über /proc/<pid>/smaps misst. Ich frage mich aber, ob diese Lösung auch bei kurzen Laufzeiten des Programms funktioniert (<1s), und ob es nicht in Python eine einfachere Lösung für eben einzelne Aufrufe gibt. Die oben beschriebene Lösung ist für laufende Prozesse gedacht (ich kann das Skript posten, falls Interesse besteht), so ähnlich wie ps, top etc.

Meine Frage konkret: Kann mir jemand einen Tip geben, ob der Ansatz über /proc/<pid>/smaps der richtige ist oder es nicht doch eine andere, bessere Lösung gibt?

Vielen Dank fürs Lesen :).
BlackJack

Donnerstag 7. Februar 2008, 18:28

Also ich würde eher Bibliotheken oder Programme empfehlen, die sich direkt in die Aufrufe von `malloc()` und `free()` einklinken und genau Buch führen wann, wieviel Speicher angefordert wurde.

valgrind wäre zum Beispiel so ein Kandidat.
paulMaier
User
Beiträge: 2
Registriert: Donnerstag 7. Februar 2008, 13:26

Montag 11. Februar 2008, 18:28

Das werde ich mal probieren, danke. Hatte mal von diesem Debugging-Werkzeug gehört, jedoch in diesem Zusammenhang nicht mehr daran gedacht.
Antworten