Hallo allerseits. Ich versuche immer noch einem vermuteten Memory leak auf die Spur zu kommen, bin aber weder ein guter Programmierer noch kenne ich linux so gut dass ich im Schlaf die Informationen in /proc/ interpretieren kann. Ich schildere mal das Problem. Wenn ein bestimmtes Programmpaket läuft (nagios 2.0b2 oder -b3, www.nagios.org) geht die Speichernutzung relativ schnell hoch und höher. In der Version -b2 bis der oom-killer anfängt das System zu zersäbeln, in der -b3 bis knapp unter 100% des verfügbaren Speichers, dann steigt er sehr viel langsamer, und dann hab' ich das Programm beendet. Nach Ende des Programms geht die Speichernutzung nicht bzw. sehr viel später wieder auf einen Wert wie im Normalbetrieb zurück - rund 6 Stunden im kürzesten Fall, maximal? keine Ahnung, ich warte bereits 28 Stunden... Ich ermittle den Speicherbedarf mit free:
elf:~ # free total used free shared buffers cached Mem: 515636 511760 3876 0 5424 14772 -/+ buffers/cache: 491564 24072 Swap: 2120540 60552 2059988 -/+ buffers used is das was ich als Wert aufzeichnen lasse.
Ach ja: Nach einem Systemstart, wenn alle Prozesse "normal" laufen liegt der Wert typischerweise um 100MB. Nun habe ich das Problem dass ich weder mit top noch ps rauskriegen kann welche Prozesse so viel Speicher nutzen. Jetzt im Moment z.B.:
elf:~ # ps -eopid= -osz= -ocmd= --sort=rss | awk '{print $2}' |xargs| sed -e 's/ /+/g'|bc 187415 elf:~ # ps -eopid= -orss= -ocmd= --sort=rss | awk '{print $2}' |xargs| sed -e 's/ /+/g'|bc 78640 (und bitte keine zu bösen Kommentare bzgl. dieser Technik - es funktioniert, und das reicht für mich...)
Beide Werte - RSS wie auch Size - liegen ja deutlich unter Memory used. Der Speicher wird also nicht in einer Form "verbraucht" die ich mit meinem Wissen nachvollziehen könnte, ich vermute also dass der Kernel daran beteiligt ist. Wer kann mir weitere Tips geben wie ich dem nachgehen könnte? Danke schonmal, Arno -- IT-Service Lehmann al@its-lehmann.de Arno Lehmann http://www.its-lehmann.de
Hi Arno Lehmann, Du schriebst:
Wer kann mir weitere Tips geben wie ich dem nachgehen könnte?
Das einzige was mir auf die Schnelle einfällt ist valgrind: http://valgrind.org/ Das ist ein memory-checker, der keine spezielle Übersetzung der zu beobachtenden Programme erfordert. Auf der Internetseite kann valgrind runtergeladen werden, es gibt auch 'ne Doku. Den Output von valgrind würde ich an den Entwickler von nagios weiterleiten. Viele Erfolg! Alexander
Hallo, Alexander Beck-Ratzka wrote:
Hi Arno Lehmann,
Du schriebst:
Wer kann mir weitere Tips geben wie ich dem nachgehen könnte? Das einzige was mir auf die Schnelle einfällt ist valgrind:
Hmm, hätte ich auch schreiben können: Ist schon in Arbeit, aber bisher ist da nichts rausgekommen ausser das das Ding ungefähr eine Millarde mögliche oder sichere leaks meldet. Allerdings sollte dann der Speicherbedarf beim Prozessende wieder runtergehen, scheint mir.
http://valgrind.org/ Den Output von valgrind würde ich an den Entwickler von nagios weiterleiten.
Viele Erfolg!
Danke. Arno
Alexander
-- IT-Service Lehmann al@its-lehmann.de Arno Lehmann http://www.its-lehmann.de
Am Dienstag, 12. April 2005 14:23 schrieb Arno Lehmann:
Ich versuche immer noch einem vermuteten Memory leak auf die Spur zu kommen, Zu welchem Behufe? Das Leck fixen, und den Programmcode zu ändern?
bin aber weder ein guter Programmierer noch kenne ich linux so gut dass ich im Schlaf die Informationen in /proc/ interpretieren kann.
das muß man auch nicht, denn es ist nutzlos. Das Werkzeug meiner Wahl ist: valgrind ABER: das nutzt nur etwas, wenn man die Quellen des zu analysierenden Programmes hat, und sich in diesen auch auskennt. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 9204871 Fax: +49(721) 24874 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Hallo, Dr. Jürgen Vollmer wrote:
Am Dienstag, 12. April 2005 14:23 schrieb Arno Lehmann:
Ich versuche immer noch einem vermuteten Memory leak auf die Spur zu kommen,
Zu welchem Behufe? Das Leck fixen, und den Programmcode zu ändern?
sagen wir mal: lassen. Auf dass es mir und anderen bessere Dienste leisten möge als jetzt.
bin aber weder ein guter Programmierer noch kenne ich linux so gut dass ich im Schlaf die Informationen in /proc/ interpretieren kann.
das muß man auch nicht, denn es ist nutzlos. Das Werkzeug meiner Wahl ist: valgrind
Na ja... nutzlos... würde ich so allgemein nicht sagen. In diesem Fall: vieleicht bzw. bis jetzt ja.
ABER: das nutzt nur etwas, wenn man die Quellen des zu analysierenden Programmes hat, und sich in diesen auch auskennt.
Na ja... ein valgrind-Output kann ja auch verschickt werden - dauert nur etwas :-) Das eigentliche verstehen der leaks und das Reparieren überlasse ich gerne Leuten die sowas in einer Form können das das Programm nachher auch funktioniert. Aber ich denk' mir immer das es gut ist bei der Fehlerbehebung so intensiv wie möglich zu helfen wenn ich denn schon von OS-Software profitiere. Arno
Bye Jürgen
-- IT-Service Lehmann al@its-lehmann.de Arno Lehmann http://www.its-lehmann.de
participants (3)
-
Alexander Beck-Ratzka
-
Arno Lehmann
-
Dr. Jürgen Vollmer