Memory Verschleiss?

30/05/2008 - 10:24 von Johannes Vogel | Report spam
Hi Leute

Für meine privaten Server-Dienste benutze ich einen VServer auf Basis
Virtuozzo und Debian Linux 2.6 (2.6.9-023stab044.12-smp). Ich stelle nun
fest, dass immer mal wieder kein Memory mehr vorhanden ist, offenbar
also Prozesse zu viel Memory klauen. Insgesamt steht mir wie folgt
Memory zur Verfügung (/proc/user_beancounters)
resource held maxheld barrier limit failcnt
kmemsize 8057677 17785274 17777274 19555001 13540

Ich habe mich also mal mit den /proc/[number]/maps auseinander gesetzt
und finde da viele Memory-Stellen, die unbenutzt scheinen:

08048000-080e5000 r-xp ... 00:0f 142936716 /usr/.../httpd
080e5000-080e8000 rwxp ... 00:0f 142936716 /usr/.../httpd
080e8000-08301000 rwxp ... 00:00 0
b6f8d000-b6fc1000 rwxs ... 00:11 1369945414
...

Die letzten beiden Zeilen in diesem Auszug scheinen ja zu keinem
Programm zu gehören. Wenn man diese Zeilen addiert, komme ich auf
immerhin 952 MB Speicher, die da erwàhnt werden.

Es stellt sich mir also die Frage, ob Linux diese Speicherbereiche
unnötig reserviert (ala Fragmentation) oder ob der Speicher von weiteren
Applikationen gebraucht werden kann.

Wer weiss was drüber oder kann mir zeigen, wo ich mehr darüber lesen kann?

Herzlichen Dank,
Johannes
 

Lesen sie die antworten

#1 christof
30/05/2008 - 13:22 | Warnen spam
Johannes Vogel schrieb:
Für meine privaten Server-Dienste benutze ich einen VServer auf Basis
Virtuozzo und Debian Linux 2.6 (2.6.9-023stab044.12-smp). Ich stelle nun
fest, dass immer mal wieder kein Memory mehr vorhanden ist, offenbar
also Prozesse zu viel Memory klauen.



Es kann sein, dass du irgendwo ein so genanntes Memory Leak hast. Dieser
Effekt tritt bei stàndig laufenden Programmen auf, wenn ein gewisser,
regelmàssig durchgeführter Prozess Speicher reserviert, ohne ihn wieder
freizugeben. Typisches Anzeichen dafür ist ein Programm, dessen
Speicherverbrauch im Lauf der Zeit immer weiter ansteigt.

Es stellt sich mir also die Frage, ob Linux diese Speicherbereiche
unnötig reserviert (ala Fragmentation) oder ob der Speicher von weiteren
Applikationen gebraucht werden kann.



Nein, Linux reserviert nicht "von sich aus" Speicher. Allerdings
unterscheidet sich die Speicherverwaltung von vielen anderen Systemen:

Linux verwaltet den Speicher im so genannten mmap Verfahren. Vereinfacht
gesagt dient praktisch der gesamte, freie Speicher als Festplattencache,
wobei der Cache automatisch verkleinert wird, wenn ein Programm mehr
Speicher anfordert. Was von Memoryutilities wie "free" als "freier
Speicher" gemeldet wird, ist lediglich das, was weder von Progrmmen direkt
alloziert noch für den Cache verwendet wird, also meist sehr wenig. Erst
wenn "Cache" und "freier Speicher" beide auf kleine Zahlen fallen, ist der
Speicher tatsàchlich überbelegt.

Ähnliche fragen