Morgen,

bin jetzt endlich mal wieder dazu gekommen weiter zu testen und hab
den Fehler für den "fehlenden" Speicher gefunden:

Nachdem das Grundsystem auf nem anderen Rechner hier ohne die
Probleme lief bin ich irgendwann darauf gekommen dass updatedb
mit sehr vielen Dateien anscheinend viel RAM braucht und nicht
direkt wieder frei gibt. 

Wenn ich auf nem normalen System updatedb laufen lasse und den
Speicher beobachte dann ist nachdem ich vom "used" RAM "cached",
"buffers" und den RAM der einzelnen Programme abziehe eine
Differenz von 15-20MB an "fehlendem" RAM vorhanden. Auf dem
Server wo es dann so extrem war, dass wirklich fast 1GB gebraucht
wurde, lag es anscheinend an sehr vielen Dateien (irgendwer hat eine
PHP-Seite die etwas Amok läuft mal auf dem Server gehabt wonach
im Webspace-Bereich ca. 450.000 Dateien erzeugt wurden...), wobei
aber der RAM bei Bedarf auch wieder freigegeben wird.

Um den RAM direkt wieder frei zu bekommen ohne neustarten zu müssen
beleg ich jetzt kurzzeitig mit folgendem Programm einmal so viel RAM
wie ich erstmal wieder  frei bekommen will, wobei ich empfehlen würd
mal etwas zu probieren damit man z.B. nicht auch den immer den ganzen 
Cache leert oder vielleicht noch den Rechner zum swappen bringt, ein
einfaches überprüfen des freien RAMs geht ja leider wegen der falschen
Anzeige nicht...


#include <stdio.h>
#include <sys/mman.h>

int main(void)
{
 unsigned long int max, free=0;
 int *f;

 // x MB RAM angeben
 free=1024;
 printf("Mache %dMB RAM wieder frei...\n", free);
 max=(1024*1024*free);
 f = mmap(NULL, max, PROT_WRITE|PROT_READ, 
MAP_PRIVATE|MAP_NORESERVE|MAP_ANONYMOUS, -1, 0);
 memset(f, 0, max);
 //system("top");
 munmap(f, max);
}


Gruß
Dominic
__________________________________________________________
Mit WEB.DE FreePhone mit hoechster Qualitaet ab 0 Ct./Min.
weltweit telefonieren! http://freephone.web.de/?mc=021201

Antwort per Email an