On Thu, Jan 17, 2002 at 09:42:35PM +0100, Samu wrote: > On Thu, Jan 17, 2002 at 06:18:07PM +0100, Daniele Cruciani wrote: > > Approposito di memoria ho trovato questo in malloc(3): > > > > Linux follows an optimistic memory allocation strategy. This > > means that when malloc() returns non-NULL there is no guarantee > > that the memory really is available. In case it turns out that > > the system is out of memory, one or more processes will be > > killed by the infamous OOM killer. > > > > Questo significa che e' persino inutile testare malloc() == NULL ? > no che centra ? > qui si parla di strategie di allocazione per evitare di avere la memoria > frammentata e che quindi risulti + piena di quello che e' ... tutto > qua.
?? non ho capito niente, comunque la frammentazione c'e' se si chiama una free() non una malloc() > > > Vale pure per posix_memalign? (nel man non c'e') > > Come si scrive qualcosa _garantito_ contro gli out of memory ? > > penso che testare quanta memoria e' libera valga a poco in un sistema > > multi tasking. > beh se la strategia di allocazione e' buona serve abbastanza bisognerebbe mettersi tutti daccordo: - processi A,B vede 10M liberi. - processi A,B alloca 2M. va bene, ma se i processi sono 6 o 15 o 100? Se le cose stanno cosi' penso che la cosa migliore per servizi critici sia di avere server dedicati che fanno poco piu' di una cosa e non occupano mai piu' (100-((max_lung_blocco)*nserver)/sysmem)% di memoria, dove max_lung_blocco e' la lunghezza massima di un blocco allocato da un qualunque processo, nserver e' il numero di processi che possono allocare memoria (10 dovrebbe andare) e sysmem e' ovviamente la memoria totale. Questa e' la strategia buona? Daniele

