Memory Problem

10/09/2009 - 20:02 von Norbert Hahn | Report spam
Hallo,

ich habe wegen spezieller Software ein àlteres Linux laufen
(SuSE 9.1) mit Kernel Version 2.6.9 und eines dieser Programme
macht Probleme. Es benutzt memory mapped IO, um größere Dateien zu
verarbeiten. Es liest eine 1,5 bis 2,2 GB große Datei, berechnet
daraus etwas, schreibt das Ergebnis auf Platte und beendet. Dabei
wird offenbar der Speichner nicht freigegeben, so dass z.B. das
Kommando top anzeigt:

top - 22:00:26 up 5:09, 4 users, load average: 0.99, 0.34, 0.15
Tasks: 57 total, 3 running, 54 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.8% us, 93.6% sy, 0.0% ni, 0.0% id, 0.0% wa, 0.4% hi, 2.3% si
Mem: 3896712k total, 2528660k used, 1368052k free, 52244k buffers
Swap: 4008208k total, 0k used, 4008208k free, 2078564k cached

Wenn das Programm wieder ausgerufen wird, um die nàchste Datei zu
bearbeiten, wird es im Speicher eng und das System beendet das Programm
und u.U. weitere laufende Programme.

Wie kann man nach dem Ende des Programms den Speicher aufràumen?

Norbert
 

Lesen sie die antworten

#1 Marcel Müller
10/09/2009 - 20:38 | Warnen spam
Hallo,

Norbert Hahn wrote:
top - 22:00:26 up 5:09, 4 users, load average: 0.99, 0.34, 0.15
Tasks: 57 total, 3 running, 54 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.8% us, 93.6% sy, 0.0% ni, 0.0% id, 0.0% wa, 0.4% hi, 2.3% si
Mem: 3896712k total, 2528660k used, 1368052k free, 52244k buffers
Swap: 4008208k total, 0k used, 4008208k free, 2078564k cached



Du wirst schon gucken müssen /welcher/ Prozess den Speicher belegt. Mal
'M' drücken wàre hilfreich.

Wenn das Programm wieder ausgerufen wird, um die nàchste Datei zu
bearbeiten, wird es im Speicher eng und das System beendet das Programm
und u.U. weitere laufende Programme.

Wie kann man nach dem Ende des Programms den Speicher aufràumen?



Das tut der Kernel. Wenn ein Prozess beendet wird, werden alle von ihm
angeforderten Ressourcen freigegeben. Das kann nur unerwartet
fehlschlagen, wenn es gemeinsam genutzte Ressourcen sind. Die werden
natürlich erst dann freigegeben, wenn alle Prozesse, die sie verwenden
beendet wurden. Das kann insofern relevant sein, wenn das Programm die
von ihm belegten Ressourcen an von ihm gestartete Programme vererbt. In
diesem Fall müssen auch diese erst beendet werden.


Marcel

Ähnliche fragen