[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: 8 giga de ram avec debian



Bonjour,

Le ven déc 05 2003 à 04:12:08 +0100, Patrice Karatchentzeff dit :
> Le Fri, 5 Dec 2003 15:50:58 +0100
> frederic.bothamy@free.fr écrivait :
> 
> [...]
> 
> > Il me semble que c'est comme cela que fonctionne le noyau. Bon, je ne
> > l'ai jamais personnellement observé ¹. Je l'ai simplement vu écrit
> > (par exemple, là :
> > http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2003-June/011658.html).
> > 
> 
> OK, c'est ce dont je parlais : c'est la différence que fait le noyau
> Linux entre l'espace utilisateur et l'espace kernel : moi, j'avais comme
> référence 75% pour l'utilisateur, 25% pour le kernel. Il suffit de
> chercher dans les sources : il y a une variable qui s'appelle OFFSET
> quelquec chose...
> 
> Mais pour l'utilisateur, quand le noyau boote, cela ne fait aucune 
> différence : il voit bien 1 Go. C'est *un* process qui ne peut pas
> s'approprier plus de X% de la totalité de la mémoire...

Voilà ce que j'ai pu comprendre dans Noyau Linux 1ère édition, et dans
$SRCLINUX/include/asm(-i386)/pgtables(-2/3level.h) :

La mémoire est définie comme répertoire global x répertoire intermédiaire x
table x déplacement.
Le déplacement est la position dans une page (2^PAGE_SHIFT = 4Mo) quelque
soit le modèle mémoire ("normal", 4Go, 64Go).
Le répertoire intermédiaire n'est utilisé qu'avec l'option 64Go, par un
appel de la fonction pgtable_cache_init() un peu particulière.
Pour revenir aux modes NOHIGHMEM et 4Go, le nombre de répertoires est
PTRS_PER_PGD=1024. Le nombre de tables est PTRS_PER_PTE=1024.
PMD_SHIFT nous donne ln2(taille adressable par une table), elle vaut 22 en
mode 4Go et 20 en mode normal (2*PAGE_SHIFT-3). Je n'ai pas compris pour
quoi la taille adressable par une table n'était pas égale à
PTRS_PER_PTE*PAGE_SHIFT en mode normal.
Similairement PGDIR_SHIFT donne la taille adressable d'un répertoire global
mais sans "bizarreries cette fois-ci).

Pour le fait que le noyau ne donne que 960Mo sur 1Go comme RAM, je soupçonne
le champs nulle défini par défaut dans la GDT d'en être responsable, ne
laissant plus que 2^13-1 entrées disponibles, à confirmer.
Si c'est le cas, l'option 4Go n'est pas nécessaire pour 1Go de RAM,
contrairement à ce qui est dit dans l'aide à la compilation du noyau.
Et le fait qu'au boot, il n'y aie que 960Mo - taille noyau indiqué sans
l'option 4Go semblerait abondé dans le sens da la doc.
Si quelqu'un peut me contredire sur ce point, y'a de la recompilation dans
l'air, l'option 4Go mangeant un peu de mémoire.

Quant à l'espace utilisateur il serait de 3Go d'après processeur.h. Cela
doit être un espace maximum car l'espace kernel est défini par différence
entre cet espace et l'espace total, non par ratio. Je n'ai aps pu remonter
le fil des # define pour trouver le pourquoi du comment.

> PK
[...]
-- 
David Dumortier
david.dumortier@dudu.dynalias.net
http://www.dudu.dynalias.net/



Reply to: