Warum zeigt mein System nur 3,2 GiB RAM an, wenn ich definitiv 4,0 GiB habe?

12

Ich habe 2x2 GiB RAM-Sticks installiert.
Das Ausführen memtest86über das Grub-Boot-Menü bestätigt dies. Memtest86 meldet keine Fehler.

Auf jede Art und Weise, wie ich meinen verfügbaren Speicher in einem laufenden Ubuntu 10.04-System überprüfe, werden nur ungefähr 3,2 GiB gemeldet.

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

Wer hat meinen fehlenden RAM?

Aktualisierte Informationen: Ich habe gerade eine andere Version von Ubuntu 10.04 auf derselben Hardware doppelt gestartet (ich habe vergessen, dass ich sie vor vielen Monaten für Notfälle installiert hatte) :) .... Es werden 3,9 GiB über System Monitor...

Ich habe meine neuesten /var/log/messagesInformationen unter http://pastebin.ubuntu.com/629246/ veröffentlicht.

Peter.O
quelle
Welche Art von Kernel verwenden Sie? Wenn Sie kein 'bigmem' oder 'x86-64' verwenden, ist möglicherweise nicht der gesamte Arbeitsspeicher für das System sichtbar. Einige BIOS-Optionen wirken sich auch auf die Sichtbarkeit des gesamten Arbeitsspeichers aus. Verwenden Sie Ihr / var / log / messages-Protokoll (ganz am Anfang), um zu sehen, wie Speicherbereiche zugeordnet wurden.
Mbaitoff
Ich weiß nicht, wie /var/log/messagesich interpretieren soll , aber ich habe meine neuesten Informationen hier veröffentlicht: pastebin.ubuntu.com/629246 .. vielleicht kann jemand Kopf-oder-Schwanz daraus machen :)
Peter.O
War das Protokoll vom 3,2-Gb-gemeldeten System oder vom 3,9-Gb-gemeldeten?
Mbaitoff
Die Zeilen 61, 62 aus Ihrem Protokoll zeigen, dass 3,2 GB verfügbar sind.
Mbaitoff
Ich habe Ubuntu 10.04 mit x86-64 (64bit) auf 4Gb-Maschine installiert. Es werden 3964 MB ('free -m') gemeldet, sodass Ihr zweites Setup Ihre RAM-Größe korrekt erkennt. Bitte überprüfen Sie, welche Art von Kernel auf Ihrem 2. System installiert ist.
Mbaitoff

Antworten:

19

Ein 32-Bit-Adressraum bedeutet, dass Sie Platz für 4 GB Adressen haben. Im Idealfall möchte der Kernel in der Lage sein, den gesamten physischen Speicher, den gesamten Speicher der aktuellen Aufgabe und den gesamten eigenen Speicher abzubilden. Wenn der physische Speicher allein alle verfügbaren 4 GB belegt, funktioniert dies nicht. Der physische Speicher ist also unterteilt in einen niedrigen Speicher, der ständig zugeordnet wird, und einen hohen Speicher, der bei Verwendung zugeordnet werden muss. Sofern Sie keinen gepatchten Kernel ausführen, sind in der ix86-Architektur 128 MB Adressraum für Kernelcode und Datenstrukturen und 896 MB für die Zuordnung des physischen Speichers (insgesamt 1 GB) vorgesehen.

Hintergrundinformationen zu den Komplexitäten der Speicherverwaltung, wenn Ihr Adressraum nicht wesentlich größer ist als Ihr Gesamtspeicher:

Auszüge aus Ihren Kernel-Protokollen:

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

Hier haben Sie 887 MB wenig Speicher: das theoretische Maximum von 896 MB minus einige MB DMA-Puffer (Speicherzonen für die Kommunikation mit Hardwaregeräten).

Von Ihrem physischen Speicher werden 3328 MB Adressen unter 4 GB und 768 MB Adressen über 4 GB zugeordnet (Bereich 0x100000000–0x130000000). Sie erhalten keinen Zugriff auf diese 768 MB, was erklärt, warum nur 3242 MB verfügbar sind (4096 MB RAM minus 768 MB unzugänglich minus 9 MB DMA-Puffer minus 75 MB, die vom Kernel selbst für Code und Daten verwendet werden). Ich weiß nicht, warum das BIOS RAM über der 4-GB-Marke abbildet, aber als Datenpunkt poste ich dies von einem PC mit 4 GB RAM, dessen RAM ebenfalls auf 0x100000000–0x130000000 abgebildet ist.

Für die Zuordnung des physischen Speichers über 4 GB muss PAE verwendet werden . PAE verursacht einen geringen Leistungsaufwand (insbesondere erfordert es größere Datenstrukturen im Speichermanager), sodass es nicht systematisch aktiviert wird. Der Standard-Ubuntu-Kernel wird ohne PAE-Unterstützung kompiliert. Holen Sie sich den -generic-paeKernel Installieren Sie linux-image-generic-pae , um auf bis zu 64 GB RAM zugreifen zu können.

TL, DR: Linux funktioniert wie erwartet. Die Firmware ist nicht so hilfreich. Holen Sie sich einen PAE-fähigen Kernel.

Gilles 'SO - hör auf böse zu sein'
quelle
Nun, das war einfach ... Danke Gilles :) ... das Protokoll zu verstehen ist definitiv schwieriger! ... Ich habe es installiert linux-image-2.6.32-32-generic-paeund htopberichte jetzt3990 MiB
Peter.O
1
Der Computer ordnet den RAM über der 4-GB-Marke zu, sodass er Hardwarespeicher wie Ihren Video-RAM unter die 4-GB-Marke stellen kann, damit er von nicht pae-fähigen 32-Bit-Kerneln verwendet werden kann.
Psusi
Ich nehme an, alle deine GB sollten GiB sein?
Weynhamz
@TechliveZheng Dies ist eine Computer-Tech-Site, keine Physik-Site. Alle meine MB, GB usw. sind in der Tat MiB, GiB usw.
Gilles 'SO - hör auf böse zu sein'
1

Vielleicht liegt es daran, dass die Architektur Ihres Ubuntu i386 (32-Bit-Version) ist. Was ist das Ergebnis beim Laufen uname -a?

Jeff
quelle
uname -a... Linux DT9400 2.6.32-32-generic # 62-Ubuntu SMP Mi Apr 20 21:54:21 UTC 2011 i686 GNU / Linux ... Wie ich jedoch in den "Aktualisierten Informationen:" in meiner Quest angegeben habe, Eine weitere 10.04 32-Bit-Dual-Boot-Installation zeigt 3.9 Gib. Beide Dual-Boot-Systeme wurden von derselben CD installiert, führen jedoch derzeit unterschiedliche Kernel aus und haben unterschiedliche Programme installiert. Übrigens, dies ist kein aktuelles Ereignis. Es zeigt seit vielen Monaten 3,2 GiB ..
Peter.O
Sie verwenden offensichtlich einen 32-Bit-Kernel ('i686'). Übrigens bedeutet 3,9 GB bereits 4 GB, da ein gewisser Adressraum von der Hardware reserviert wird.
Mbaitoff
Ja, danke mbaitoff, ich würde erwarten, dass ein bisschen Gedächtnis herumläuft, aber ich denke, 0,8 GiB sind zu viel, also würde ich gerne herausfinden, was hier los ist.
Peter.O
AFAIK Ubuntu kann den PAE-Kernel installieren, der selbst auf x86
Anton Barkovsky
3
Ich denke, Sie müssen nur den Pae-Kernel (Linux-Generic-Pae und Linux-Header-Generic-Pae) installieren und, wenn Sie möchten, den allgemeinen Kernel entfernen.
Anton Barkovsky