[gull] Memory: 8179320k/8912896k available (3312k kernel code, 528920k absent
Marc Mongenet
marc at mongenet.ch
Sat Jan 23 14:48:30 CET 2010
Bonjour,
Qu'est-ce que la mémoire "absente" ?
Comment la récupérer ?
En détail :
Depuis que mon PC est un x86_64 avec 8 Go de RAM,
j'ai plus de 512 Mo de RAM qui sont déclarés "absent"
par le noyau :
> dmesg
Linux version 2.6.32-ARCH (tobias at T-POWA-LX) (gcc version 4.4.2
20091208 (prerelease) (GCC) ) #1 SMP PREEMPT Mon Jan 18 23:30:46 CET
2010
[...]
Memory: 8179320k/8912896k available (3312k kernel code, 528920k
absent, 203700k reserved, 1752k data, 472k init)
[...]
> free
total used free shared buffers cached
Mem: 8181348 344756 7836592 0 9112 128276
-/+ buffers/cache: 207368 7973980
Swap: 0 0 0
Ce que j'ai découvert jusque là :
1) Je ne suis pas seul à rencontrer cela :
http://bbs.archlinux.org/viewtopic.php?id=14412
2) J'ai testé avec MemTest86+ et je n'ai pas de
mémoire défectueuse (j'en ai eu, mais je l'ai
remplacée, et de toute façon il faut plusieurs minutes
de test pour détecter un bit défectueux dans 8 Go de
RAM, donc le noyau ne peut pas raisonnablement
faire ce test au démarrage.)
3) L'affichage de ce message est causé par la ligne 682
du ficier source du noyau arch/x86/mm/init_64.c :
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.32.y.git;a=blob;f=arch/x86/mm/init_64.c;h=5a4398a6006bcca5a0bce02e53f06601f399a09e;hb=HEAD#l682
4) C'est la fonction absent_pages_in_range qui calcule
cette valeur. Voici ce qu'elle fait :
Return number of page frames in holes within a range.
http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.32.y.git;a=blob;f=mm/page_alloc.c#l3623
5) Je vois plus ou moins ce que sont des "page frames"
et des "holes" (c'est expliqué dans
http://www.informit.com/articles/article.aspx?p=29961),
mais pas suffisamment pour saisir toutes les
implications.
Marc Mongenet
More information about the gull
mailing list