Pourquoi mon système n'affiche-t-il que 3,2 Gio de RAM alors que j'ai définitivement 4,0 Gio

12

J'ai 2x2 GiB sticks de RAM installés.
L'exécution à memtest86partir du menu de démarrage de grub confirme cela. Memtest86 ne signale aucune erreur.

Cependant, dans tous les cas, je vérifie ma mémoire disponible dans un système Ubuntu 10.04 en cours d'exécution, il ne rapporte qu'environ 3,2 Gio.

  • cat /proc/meminfo == 3320132 kB
  • System Monitor == 3,2 Gio
  • htop == 3242 Mo
  • free -m == 3242 Mo

Qui a ma RAM manquante ?

Informations mises à jour: je viens de lancer un double démarrage dans une autre version d'Ubuntu 10.04 sur le même matériel (j'ai oublié que je l'avais installé il y a plusieurs mois, pour les urgences):) .... Il rapporte 3,9 Gio, via System Monitor...

J'ai publié mes /var/log/messagesinformations les plus récentes sur http://pastebin.ubuntu.com/629246/

Peter.O
la source
Quel genre de noyau utilisez-vous? À moins que vous n'utilisiez un «bigmem» ou un «x86-64», il est possible que toute votre RAM ne soit pas visible pour le système. De plus, certaines options du BIOS affectent la visibilité de la RAM totale. Utilisez votre journal / var / log / messages (au tout début) pour voir comment les régions mémoire ont été mappées.
mbaitoff
Je ne sais pas comment interpréter /var/log/messages, mais j'ai posté mes informations les plus récentes ici: pastebin.ubuntu.com/629246 .. peut-être que quelqu'un peut en faire des tête-à-tête :)
Peter.O
Ce journal provenait-il du système signalé à 3,2 Go ou du système signalé à 3,9 Go?
mbaitoff
Les lignes 61,62 de votre journal affichent 3,2 Go disponibles.
mbaitoff
J'ai Ubuntu 10.04 avec x86-64 (64bit) installé sur la machine 4Gb. Il rapporte 3964 Mo ('free -m'), donc votre deuxième configuration détecte correctement la quantité de RAM. Veuillez vérifier quel type de noyau est installé sur votre 2ème système.
mbaitoff

Réponses:

19

Un espace d'adressage 32 bits signifie que vous disposez d'un espace pour 4 Go d'adresses. Idéalement, le noyau aime pouvoir mapper toute la mémoire physique, toute la mémoire de la tâche en cours et toute sa propre mémoire. Si la mémoire physique occupe à elle seule tous les 4 Go disponibles, cela ne fonctionnera pas. La mémoire physique est donc divisée en mémoire faible, qui est mappée tout le temps, et en mémoire haute, qui doit être mappée lorsqu'elle est utilisée. À moins que vous exécutiez un noyau corrigé, sur l'architecture ix86, 128 Mo d'espace d'adressage sont consacrés au code du noyau et aux structures de données, et 896 Mo sont consacrés au mappage de la mémoire physique (pour un total de 1 Go).

Lecture de fond sur les complexités de la gestion de la mémoire lorsque votre espace d'adressage n'est pas confortablement plus grand que votre mémoire totale:

Extraits de vos journaux de noyau:

BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cdce0000 (usable)
BIOS-e820: 00000000cdce0000 - 00000000cdce3000 (ACPI NVS)
BIOS-e820: 00000000cdce3000 - 00000000cdcf0000 (ACPI data)
BIOS-e820: 00000000cdcf0000 - 00000000cdd00000 (reserved)
BIOS-e820: 00000000d0000000 - 00000000e0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000130000000 (usable)
2404MB HIGHMEM available.
887MB LOWMEM available.
Zone PFN ranges:
DMA      0x00000000 -> 0x00001000
Normal   0x00001000 -> 0x000377fe
HighMem  0x000377fe -> 0x000cdce0

Ici, vous avez 887 Mo de mémoire faible: le maximum théorique de 896 Mo moins quelques Mo de tampons DMA (zones de mémoire utilisées pour communiquer avec les périphériques matériels).

De votre mémoire physique, 3328 Mo sont mappés à des adresses inférieures à 4 Go et 768 Mo sont mappés à des adresses supérieures à 4 Go (la plage 0x100000000–0x130000000). Vous n'avez pas accès à ces 768 Mo, ce qui explique pourquoi vous n'avez que 3242 Mo disponibles (4096 Mo de RAM moins 768 Mo inaccessibles moins 9 Mo de tampons DMA moins 75 Mo utilisés par le noyau lui-même pour le code et les données). Je ne sais pas pourquoi le BIOS mappe de la RAM au-dessus de la marque de 4 Go, mais en tant que point de données, je publie cela à partir d'un PC avec 4 Go de RAM qui a de la même manière une RAM mappée à 0x100000000–0x130000000.

Le mappage de la mémoire physique au-dessus de 4 Go nécessite l'utilisation de PAE . PAE entraîne une petite surcharge de performances (en particulier, il nécessite des structures de données plus grandes dans le gestionnaire de mémoire), il n'est donc pas systématiquement activé. Le noyau Ubuntu par défaut est compilé sans prise en charge PAE. Obtenez le -generic-paenoyau Installez linux-image-generic-pae pour pouvoir accéder jusqu'à 64 Go de RAM.

TL, DR: Linux fonctionne comme prévu. Le firmware n'est pas si utile. Obtenez un noyau compatible PAE.

Gilles 'SO- arrête d'être méchant'
la source
Eh bien, c'était facile ... Merci Gilles :) ... comprendre le journal est définitivement plus difficile! ... J'ai installé linux-image-2.6.32-32-generic-pae, et htopmaintenant je rapporte3990 MiB
Peter.O
1
La machine mappe le ram au-dessus de la marque de 4 Go afin de pouvoir placer la mémoire matérielle comme votre RAM vidéo sous la marque de 4 Go afin qu'ils puissent être utilisés par des noyaux 32 bits non compatibles PAE.
psusi
Je suppose que tous vos Go devraient être GiB?
weynhamz
@TechliveZheng Ceci est un site de technologie informatique, pas un site de physique. Tous mes MB, GB, etc. sont en effet MiB, GiB, etc.
Gilles 'SO- arrête d'être méchant'
1

C'est peut-être parce que l'architecture de votre Ubuntu est i386 (version 32 bits). Quel est le résultat lorsque vous courez uname -a?

Jeff
la source
uname -a... Linux DT9400 2.6.32-32-generic # 62-Ubuntu SMP mer 20 avr 21:54:21 UTC 2011 i686 GNU / Linux ... Cependant, comme je l'ai mentionné dans les "Informations mises à jour:" dans mon queston, une autre installation 10.04 32 bits à double démarrage montre 3,9 Gib .. Les deux systèmes à double démarrage ont été installés à partir du même CD, mais exécutent actuellement différents noyaux et ont différents programmes installés ... BTW, ce n'est pas un événement récent, Il affiche 3,2 Gio depuis de nombreux mois ..
Peter.O
Vous utilisez évidemment un noyau 32 bits ('i686'). Par ailleurs, 3,9 Go signifie déjà 4 Go, car un espace d'adressage est réservé par le matériel.
mbaitoff
Oui, merci mbaitoff, je m'attendrais à ce qu'un peu de mémoire soit disponible, mais je pense que 0,8 Gio est trop, alors j'aimerais savoir ce qui se passe ici.
Peter.O
AFAIK Ubuntu peut installer le noyau PAE qui peut utiliser de grandes quantités de RAM même sur x86
Anton Barkovsky
3
Je pense qu'il vous suffit d'installer le noyau pae (linux-generic-pae et linux-headers-generic-pae) et, si vous le souhaitez, de supprimer le noyau général.
Anton Barkovsky