Thread View: ch.comp.os.linux
4 messages
4 total messages
Started by Johannes Vogel
Fri, 30 May 2008 08:24
Memory Verschleiss?
Author: Johannes Vogel
Date: Fri, 30 May 2008 08:24
Date: Fri, 30 May 2008 08:24
31 lines
2181 bytes
2181 bytes
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
Re: Memory Verschleiss?
Author: Christof Buergi
Date: Fri, 30 May 2008 11:22
Date: Fri, 30 May 2008 11:22
27 lines
2530 bytes
2530 bytes
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.
Re: Memory Verschleiss?
Author: Johannes Vogel
Date: Sat, 31 May 2008 09:17
Date: Sat, 31 May 2008 09:17
29 lines
2480 bytes
2480 bytes
Hi Christof Christof Buergi wrote: > 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. Tatsächlich stelle ich fest, dass Apache und MySQL ein solches Verhalten aufweisen. Natürlich sind diese zwei aber auch gerade Applikationen, die ich häufig verwende. Trotzdem bin ich etwas erstaunt, weil sie ja doch vielfach verwendet werden. Mir fällt vor allem auf, dass Apache schnell mal die maximale Anzahl Client einnimmt - obwohl Herzlichen Dank für die Ausführung zum mmap Verfahren. Unter `top` sehe ich aber nur: Mem: 1310720k total, 844048k used, 466672k free, 0k buffers Wenn ich dich richtig verstand wird bei mir die HDD nicht gecached? Ok, ich befinde mich auf einem VServer-System - vielleicht möchte der Anbieter da möglichst RAM sparen? Herzlichen Dank, Johannes
Re: Memory Verschleiss?
Author: Johannes Vogel
Date: Sat, 31 May 2008 09:21
Date: Sat, 31 May 2008 09:21
42 lines
3035 bytes
3035 bytes
Hi Harald Harald Weidner wrote: > Johannes Vogel <newsgroups@jvogel.ch>: >> 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. > Die Speicherbereiche geh�ren durchaus zu einem Programm, n�mlich > zu dem Prozess mit der PID [nummer]. Deswegen stehen sie in > /proc/[nummer]/maps . > Sie geh�ren lediglich nicht zu einer bestimmten Datei, sondern wurden > zur Laufzeit des Programmes dynamisch alloziiert. Die ersten beiden > Zeilen geben dagegen Speicherbereiche an, die direkt aus einer Datei > in den Speicher gemappt werden. Woraus ich nun schliesse, dass die Speicherbereiche nicht mehr ben�tigt w�rden, aber weiterhin reserviert bleiben. Irre ich mich da? > Die Summe der Speicherbereiche aus allen /proc/*/maps Eintr�gen > �bersteigt den real verf�gbaren Speicher bei weitem. Das liegt u.a. > daran, dass viele Prozesse die selbe Bin�rdatei und/oder Library > benutzen. Dieser Speicher wird dann physisch nur einmal belegt, aber > in die Adressr�ume mehrere Prozesse gemappt. Das ist ein sehr intelligentes Verhalten. In diesem Fall ist der angegebene Speicherbereich (oben 080e8000-08301000) ein virtueller Wert? Wo sehe ich den tats�chlich belegten Speicherbereich pro Programm? Eigentlich h�tte ich ja nur gerne eine Ansicht, wie ich sie aus dem Prozessmanager in Windows XP kenne. Pro Programm den ben�tigten Speicherbereich, so dass ich beurteilen kann, wer wieviel Speicher verbraucht. Herzlichen Dank! Johannes
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads