Andre Landwehr schrieb: > 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.
Man muss eben immer Shared und Private sowie File und Anon unterscheiden. > 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. malloc/free ist einfach, new/delete ein PITA. Aber wen ich mich richtig erinnere gibts da was von Ratiopharm. Malloc-debuger die man per LD_PRELOAD einbinden kann. Hinweisen sollte man auch auf die glibc info-seite zu dynamischer Speicherverwaltung, die obeyed ein paar Umgebungsvariablen und hat da ein paar funktionen um Malloc stats rauszufingern. Nervig ist, das new/delete aus der stdlibc++ kommt, also die Knoepfe nicht hat (oder andere?). Natuerlich gibt es immer noch massiv, aus der Valgrind Suite. > 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). > /proc/smaps http://github.com/dottedmag/mem-usage/raw/master/mem_usage Oder einfach htop und da die ziffern bewundern... Fuer den Maximal bedarf, das ist oft nicht sooo das problem, da durch heap fragmentation der Bedarf nur steigt, selten sinkt (was hab ich gestaunt das nen Serverprozess den ich geschrieben habe, es schafft im laufe von Stunden nach nem surge nach oben auch wieder zu schrumpfen). Er kann sich auch mit strace da reinhaengen und alles was nach sbrk und mmap/munmap aussieht sich angucken. Vielleicht noch madvise(WONT_NEED) oder wie das hiess. [snip] > > Gruß, Andre > Gruss Jan -- >> Wie, Ihr habt eure CBM 8032 und eure Zx81 nicht mehr? > Ich glaub in meinem Taschenrechner ist ein Z80 In meiner Waschmaschine ist auch ein 68000er. Trotzdem, auch mit Colorwaschmittel ists kein Amiga. -- ger.ct -- 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
