Perché il mio sistema mostra solo 3,2 GiB di RAM quando ho sicuramente 4.0 GiB


12

Ho installato 2 x 2 GB di RAM RAM.
L'esecuzione memtest86dal menu di avvio di grub lo conferma .. memtest86 non segnala errori.

Tuttavia, in ogni modo, controllo la mia memoria disponibile in un sistema Ubuntu 10.04 in esecuzione, riporta solo circa 3,2 GiB.

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

Chi ha la mia RAM mancante ?

Informazioni aggiornate: ho appena avviato il dual- boot in un'altra versione di Ubuntu 10.04 sullo stesso hardware (ho dimenticato di averlo installato molti mesi fa, per le emergenze):) .... Segnala 3,9 GiB, tramite System Monitor...

Ho pubblicato le mie /var/log/messagesinformazioni più recenti su http://pastebin.ubuntu.com/629246/


Che tipo di kernel stai usando? A meno che non si usi un 'bigmem' o 'x86-64', è possibile che non si abbia tutta la RAM visibile sul sistema. Inoltre, alcune opzioni del BIOS influiscono sulla visibilità della RAM totale. Usa il tuo registro / var / log / messages (all'inizio) per vedere come sono state mappate le aree di memoria.
mbaitoff,

Non so come interpretare /var/log/messages, ma ho pubblicato le mie informazioni più recenti qui: pastebin.ubuntu.com/629246 .. forse qualcuno può farne testa a testa :)
Peter.O

Quel registro proveniva dal sistema segnalato da 3.2Gb o da quello segnalato da 3.9Gb?
mbaitoff,

Le righe 61,62 dal tuo registro mostrano 3.2Gb disponibili.
mbaitoff,

Ho Ubuntu 10.04 con x86-64 (64 bit) installato su una macchina da 4 GB. Riporta 3964 Mb ('free -m'), quindi la tua seconda installazione rileva correttamente la quantità di RAM. Controlla quale tipo di kernel è installato sul tuo secondo sistema.
mbaitoff,

Risposte:


19

Uno spazio di indirizzi a 32 bit significa che hai spazio per 4 GB di indirizzi. Idealmente, al kernel piace essere in grado di mappare tutta la memoria fisica, tutta la memoria dell'attività corrente e tutta la propria memoria. Se la memoria fisica da sola occupa tutti i 4 GB disponibili, non funzionerà. Quindi la memoria fisica è divisa in memoria insufficiente, che è sempre mappata, e memoria alta, che deve essere mappata quando è in uso. A meno che non si stia eseguendo un kernel con patch, sull'architettura ix86, 128 MB di spazio di indirizzi sono dedicati al codice del kernel e alle strutture di dati e 896 MB sono dedicati alla mappatura della memoria fisica (per un totale di 1 GB).

Lettura in background delle complessità della gestione della memoria quando lo spazio degli indirizzi non è comodamente più grande della memoria totale:

Estratti dai log del kernel:

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

Qui hai 887 MB di memoria insufficiente: il massimo teorico di 896 MB meno alcuni MB di buffer DMA (zone di memoria utilizzate per comunicare con i dispositivi hardware).

Della tua memoria fisica, 3328 MB è mappato a indirizzi inferiori a 4 GB e 768 MB è mappato a indirizzi superiori a 4 GB (l'intervallo 0x100000000–0x130000000). Non hai accesso a questi 768 MB, il che spiega perché hai solo 3242 MB disponibili (4096 MB di RAM meno 768 MB inaccessibili meno 9 MB di buffer DMA meno 75 MB utilizzati dal kernel stesso per codice e dati). Non so perché il BIOS associ un po 'di RAM al di sopra del segno da 4 GB, ma come punto dati, sto pubblicando questo da un PC con 4 GB di RAM che allo stesso modo ha RAM mappata a 0x100000000–0x130000000.

La mappatura della memoria fisica superiore a 4 GB richiede l'utilizzo di PAE . PAE comporta un piccolo sovraccarico di prestazioni (in particolare, richiede strutture dati più grandi nel gestore della memoria), quindi non è abilitato sistematicamente. Il kernel predefinito di Ubuntu è compilato senza supporto PAE. Ottieni il -generic-paekernel Installa linux-image-generic-pae per poter accedere fino a 64 GB di RAM.

TL, DR: Linux funziona come previsto. Il firmware non è così utile. Ottieni un kernel abilitato per PAE.


Bene, è stato facile ... Grazie Gilles :) ... capire il registro è sicuramente più difficile! ... Ho installato linux-image-2.6.32-32-generic-paee htopora riporta3990 MiB
Peter.O

1
La macchina mappa il ram sopra il segno da 4 GB in modo da poter mettere la memoria hardware come il tuo ram video sotto il segno da 4 GB in modo che possano essere utilizzati da kernel a 32 bit non abilitati.
psusi,

Suppongo che tutti i tuoi GB dovrebbero essere GiB?
weynhamz,

@TechliveZheng Questo è un sito di tecnologia informatica, non un sito di fisica. Tutti i miei MB, GB, ecc. Sono davvero MiB, GiB, ecc.
Gilles 'SO- smetti di essere malvagio' il

1

Forse è perché l'architettura di Ubuntu è i386 (versione a 32 bit). Qual è il risultato quando corri uname -a?


uname -a... Linux DT9400 2.6.32-32-generic # 62-Ubuntu SMP mer 20 apr 21:54:21 UTC 2011 i686 GNU / Linux ... Tuttavia, come ho già detto in "Informazioni aggiornate:" nella mia ricerca, un'altra installazione 10.04 a 32 bit a doppio avvio mostra 3.9 Gib .. Entrambi i sistemi a doppio avvio sono stati installati dallo stesso CD, ma attualmente eseguono kernel diversi e hanno programmi diversi installati ... A proposito, questo non è un evento recente, Ha mostrato 3,2 GiB per molti mesi ..
Peter.O

Ovviamente stai eseguendo un kernel a 32 bit ('i686'). A proposito, 3.9Gb significa già 4Gb, poiché alcuni spazi degli indirizzi sono riservati dall'hardware.
mbaitoff,

Sì, grazie mbaitoff, mi aspetterei un po 'di memoria per andare in giro, ma penso che 0,8 GiB sia troppo, quindi mi piacerebbe scoprire cosa sta succedendo qui.
Peter

AFAIK Ubuntu può installare il kernel PAE che può usare grandi quantità di RAM anche su x86
Anton Barkovsky,

3
Penso che devi solo installare il kernel pae (linux-generic-pae e linux-headers-generic-pae) e, se vuoi, rimuovere il kernel generale.
Anton Barkovsky,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.