Question Seulement 3,2 Go de 4 Go de RAM détectés sur Debian 64 bits


Je cours Debian Squeeze (x64):

# uname -srvmo
Linux 2.6.32-5-amd64 #1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64 GNU/Linux

J'ai 2 bâtons de 2 Go de DDR2 compatibles dans mon Carte mère G31M-S. Il supporte jusqu'à 8 Go:

enter image description here

Puisqu'il s'agit d'un serveur, je ne m'intéresse pas vraiment aux graphiques. Je l'ai donc mis au plus bas.

Internal Graphics Mode Select: Auto
                               Enabled, 1MB   <--
                               Enabled, 8MB
DVMT Mode Select:              Fixed Mode     <--
                               Auto
    DVMT/FIXED Memory:         128MB          <--
                               256MV

enter image description here

Cependant, Linux ne détecte que 3.19GiB de mémoire:

# cat /proc/meminfo
MemTotal:        3350712 kB
...

En regardant le Carte E820:

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
[    0.000000]  BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 00000000cfdb0000 (usable)
[    0.000000]  BIOS-e820: 00000000cfdb0000 - 00000000cfdc0000 (ACPI data)
[    0.000000]  BIOS-e820: 00000000cfdc0000 - 00000000cfdf0000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000cfdf0000 - 00000000cfe00000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000ff380000 - 0000000100000000 (reserved)
[    0.000000] DMI present.
[    0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it.
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)

Et faire un peu de maths:

>>> ((0x9F800 - 0x10000) + (0xCF6B0000 - 0x100000)) / 1024.0 / 1024.0 / 1024.0
3.240476608276367

Nous obtenons à peu près la même réponse.

Qu'est-ce que je rate?


Je n'achète pas complètement l'argument "PCI address space". En prenant l'un des deux sticks de 2 Go, l'écran de configuration affiche 2048 Mo.

# cat /proc/meminfo
MemTotal:        2058432 kB

C'est 1.96GB.

Carte E820 encore:

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
[    0.000000]  BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 000000007fdb0000 (usable)
[    0.000000]  BIOS-e820: 000000007fdb0000 - 000000007fdc0000 (ACPI data)
[    0.000000]  BIOS-e820: 000000007fdc0000 - 000000007fdf0000 (ACPI NVS)
[    0.000000]  BIOS-e820: 000000007fdf0000 - 000000007fe00000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000ff380000 - 0000000100000000 (reserved)
[    0.000000] DMI present.
[    0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it.
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)

Et les maths ...

>>> ((0x9F800 - 0x10000) + (0x7fdb0000 - 0x100000)) / 1024.0 / 1024.0 / 1024.0
1.9973125457763672

J'ai donc 2 Go / 2 Go. /proc/cpuinfo montre que mon processeur prend en charge l'adressage physique 36 bits. 2 ^ 36 = 64 Go, ce dont je ne suis pas très proche.


# ./smem -R 4G -w
Area                           Used      Cache   Noncache
firmware/hardware            843592          0     843592
kernel image                      0          0          0
kernel dynamic memory        181116     134616      46500
userspace memory             287784      19736     268048
free memory                 2881812    2881812          0

9
2017-07-25 00:18


origine


Assurez-vous que le remappage de la mémoire est SUR dans le BIOS. - David Schwartz
@DavidSchwartz J'ai essayé de l'activer et le noyau a paniqué au démarrage. Je peux essayer cela avec un CD live. - Jonathon Reinhart
@DavidSchwartz Vous avez tout à fait raison. Activer le remappage de la mémoire semble avoir fait l'affaire. Sans elle, Memtest86 + rapporte environ 3300 Mo. Avec elle allumé, il rapporte 4086 Mo. Si vous en faites une réponse, je l'accepterai volontiers. - Jonathon Reinhart


Réponses:


Vous devez activer le remappage de mémoire SUR dans le BIOS. Sinon, il ne remappera pas la mémoire au-delà de la limite de 4 Go et de la mémoire sera masquée par les mappages matériels.


5
2017-08-22 07:57



C'était le problème. Activer le remappage de la mémoire semble avoir fait l'affaire. Sans elle, Memtest86 + rapporte environ 3300 Mo. Avec elle allumé, il rapporte 4086 Mo. - Jonathon Reinhart
Même chose avant d'activer Memory Hole Remapping (AMIBIOS), le POST rapporterait environ 3,3 Gio, tandis que DMI listerait toujours deux modules de 2 Gio chacun. - njsg


PCI utilise également une partie de l'espace d'adressage. Les cartes PCI et les périphériques PCI sont intégrés dans la carte mère (comme le chipset).

Habituellement, cela signifiait que sur 4 Go, seuls 3¼ à 3½ Go étaient disponibles, même si vous n'utilisiez pas un GPU moderne avec beaucoup de mémoire vive intégrée.


5
2017-07-25 00:20



J'ai pratiquement ignoré ce fait ... je veux dire 0,8 Go? Cependant, le haut de la carte e820 est 0x100000000 == 1<<32, ce qui est intéressant. Alors, pourquoi le BIOS ne mappe-t-il pas le reste de la RAM au-dessus de 1 << 32? C'est un Celeron E3400, et /proc/cpuinfo dit address sizes : 36 bits physical, 48 bits virtual Cela devrait être bon pour 64 Go. ((1<<36) / (1024*1024*1024) == 64) - Jonathon Reinhart
Le manuel de mon ancienne carte mère Tyan est le seul qui semble m'avertir que bien qu'il supporte 4 Go de RAM, il n'exposerait jamais tout cela au système d'exploitation. Selon les cartes d'extension utilisées (PCI ancien, 66 MHz, 64 bits), il exposerait environ 3,3 Go d'espace utilisable. Je n'ai jamais pu tester cela, 512 Mo de RAM était tout ce que je pouvais me permettre. (Cela était de retour quand cette carte mère à double processeur signifiait toujours utiliser deux processeurs physiques. Les choses ont peut-être changé depuis et PCIe peut ne pas avoir la même limite. Mais la plupart des cartes mères ont toujours à la fois PCI et PCIe). - Hennes
Voir mon montage Je pense que le problème est que soit le BIOS refuse de signaler toute mémoire à propos de 1<<32, ou ce noyau ne sait pas comment le comprendre. - Jonathon Reinhart
Avez-vous considéré la mémoire partagée utilisée par vos graphiques internes? Si tu as smem installé, essayez smem -R 4G -w pour un aperçu général de la mémoire disponible / utilisée. - Izzy
@Hennes Cette réponse serait parfaitement logique s'il s'agissait d'un système 32 bits. Mais pas pour 64 bits (avec un adressage de mémoire physique de 36 bits). - Jonathon Reinhart


Votre RAM manquante est utilisée par le micrologiciel:

# ./smem -R 4G -w
Area                           Used      Cache   Noncache
firmware/hardware            843592          0     843592
kernel image                      0          0          0
kernel dynamic memory        181116     134616      46500
userspace memory             287784      19736     268048
free memory                 2881812    2881812          0

En résumé:

echo $((181116 + 287784 + 2881812 + 843592))
4194304

Donc, vous voyez, cela revient à 4 Go. Et voici le ~ 800M que vous signalez manquant:

firmware/hardware            843592          0     843592

2
2017-07-25 14:28



Oui, et je ne suis pas surpris par cela. La question est, pourquoi le BIOS ne signale-t-il pas 800 Mo de RAM ci-dessus? 0x100000000 (1<<32) ? Il se comporte comme s'il s'agissait d'un système 32 bits. - Jonathon Reinhart
Oui, je pense que cette réponse est valide, mais cette dernière question reste :-) - Jonathon Reinhart
Alors qu'est-ce que smem -R 2G -w dire avec juste 2G dans la machine (en particulier en ce qui concerne le firmware / matériel, comme cela semble être la section où le "800M manquant" est allé avec 4G)? Serait assez drôle si le firmware n'a soudainement plus besoin de ces 800M ... - Izzy
Pourrait-il avoir à faire avec AMI BIOS detected: BIOS may corrupt low RAM, working around it. - et la remarque de Wikipedia (à partir de votre lien e820) "Parfois, le BIOS est bogué et signale de manière incorrecte la mémoire réservée. ? EDIT: Ah, non - ce serait juste compte pour 64k, pas 800M ... - Izzy
Je peux vérifier quand je rentre à la maison, mais je suppose que cela va dire la même chose. Regardez la carte E820 pour 2 Go. Par observation, il semble à peu près identique, sauf que les plages réservées / ACPI sont plus faibles dans l’espace addr (certaines d’entre elles). - Jonathon Reinhart