Am Montag, den 19.04.2010, 11:54 +0200 schrieb Sascha Effert:
> ich habe in C++ eine shared library und ein Programm, welches dies
> benutzt geschrieben. Ich würde jetzt gerne mit dem Speicherbedarf
> experimentieren, speziell mit dem, was durch die shared lib verbraucht
> wird. Momentan habe ich dazu das Programm gestartet und regelmäßig mit
> ps -p $PID -o rss h
> den genutzten Speicherbedarf abgefragt. Habe ich damit wirklich den
> gesamten Speicher, den der Prozess benötigt? Ich muss gestehen, ich
> blicke durch die verschiednen Parameter nicht durch.

Meiner Erfahrung nach ist es absolut nicht trivial, den
Speicherverbrauch eines Prozesses mit Linux Bordmitteln herauszufinden.
Shared libs wie z.B. die glibc fressen eine Menge Platz, werden aber von
mehr als einem Prozess genutzt usw., da kann man auch schlicht keine
Angaben zu machen. 
Was du relativ einfach ermitteln kannst, ist wie viel Speicher du selbst
allozierst. Dafür einfach global malloc/free bzw. new und delete
überladen und mitzählen. Ansonsten ist getrusage vermutlich schon die
beste Lösung, oder halt in proc/[pid]/statm schauen, steht das gleiche
drin (wobei du das pollen und händisch auswerten müsstest).

> Da ich die Anwendung selbst geschrieben habe, könnte ich auch an
> passenden Stellen die Methode getrusage aufrufen:
> http://linux.die.net/man/2/getrusage
> Leider ist mir auch hier wieder nicht ganz klar, worüber ich die gesamte
> Menge des verwendeten Speichers meines Prozesses erhalte.

ru_idrss und ru_isrss sind auf jedenfall klar deinem Prozess zuzuordnen,
der shared memory aus o.g. Gründen halt nicht.

Gruß, Andre

-- 
Andre Landwehr, Ricklinger Stadtweg 42, D-30459 Hannover
Phone: +49-(0)511-1054932, Mobile: +49-(0)175-4648375


Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

--
Linux mailing list [email protected]
subscribe/unsubscribe: http://lug-owl.de/mailman/listinfo/linux
Hinweise zur Nutzung: http://www.lug-owl.de/Mailingliste/hints.epo

Antwort per Email an