Quantita' massima di memoria per processo/SO ?
Alfredo Quartini
quarto a numerica.it
Lun 22 Dic 2003 13:50:07 UTC
... qualcosa non mi torna...
eseguendo uno dei programmini citati, il top mi dice :
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
27921 alfredoq 25 0 2168M 2.1G 956 R 99.8 36.5 2:07 gdsinfo
che è ben al di la' dei 960MB.
La mia domanda è: indipentemente dalla massima quantità di memoria
allocabile da un singolo processo, dovendone eseguire tre o quattro
contemporaneamente di tipo quello sopra, avere 6GB di memoria fisica
dovrebbe servire a qualcosa invece che averne "solo" 4GB ?
questo è parte di quello che ho trovato in giro:
Physical Memory
Physical memory above 1GB is known as the high memory zone [USE]. In
earlier 2.2.x releases, this was the maximum amount of physical memory
the kernel could use unless it were customized. By 2.2.17 this memory
could be accessed by setting the CONFIG_HIGHMEM_4G option which moved
the kernel down from 3GB to 2GB. This also cuts down the memory
available to any single process however [YAN]. If the CONFIG_HIGHMEM_64G
option is selected, then PAE is turned on and the kernel can access up
to 64GB of RAM. This support must be compiled into the kernel [CONF].
However, even though your machine may support greater than 4GB of
memory, no user process can use more than 4GB of memory at a time
(again, the 32-bit pointer limit).
Even though pointers are still only 32-bits wide, the kernel can access
all of physical memory by changing the values in the top-level directory
(pgd) or by changing the base address of the pgd by moving a new value
into register CR3[PPR]. (Note that changing CR3 invalidates the entire
TLB, and a task switch changes the CR3 [PPR].)
Che mi sembra voglia dire che ***un singolo processo*** può avere uno
spazio di memoria fino a 4GB; nel caso di piu' processi di questo tipo,
il kernel (con il supporto PAE fornito dal processore) si occupa della
paginazione sfruttando "tutto quello che c'e' in piu'" per garantire che
tutti i processi siano felici e contenti...
Ho capito male ?
Alfredo.
andrea gelmini wrote:
> On Mon, Dec 22, 2003 at 11:33:22AM +0100, Alfredo Quartini wrote:
>
>>Ciao,
>>
>>sto leggendo un po' di documentazione a proposito di PAE per le macchine
>>che hanno piu' di 4GB di memoria. Qualcuno mi puo' confermare che, per
>>una architettura Intel Xeon con piu' di 4GB di memoria, la quantita'
>>massima di memoria visibile da un processo è di 4GB e che solo il kernel
>
> no, la quantita' massima di memoria allocabile per un processo e' di 960
> MB.
> se il tuo programma ne necessita di piu' deve ricorrere a trucchetti di
> vario tipo.
>
>
>> si prende briga di gestire la memoria rimanente per assegnarla qua e
>>la' ai vari processi, oppure per il caching etc. ? E' implicito che su
>>'sto macchina girano simulazioni a cui piacerebbe tanto avere 1TB di
>>memoria disponibile ;-)
>
> non e' implicito e, sostanzialmente, non si puo' fare in modo banale.
> i modi corretti sono piu' d'uno, ma vanno attentamente valutati. mesi fa
> c'e' stata una lunga discussione a riguardo nella mailing list del kernel,
> prova a guardare li. Se non dovessi trovare nulla posso provare a dare un
> occhio io.
>
>>Grazie, Alfredo.
>
> prego.
>
>
>>P.S: il 18 dicembre è uscito il kernel 2.6.0 e nessuno ha detto nulla ?
>
> che dire?
>
Maggiori informazioni sulla lista
Lug
|