I miei problemi sono stati causati da un modulo di memoria difettoso e molto probabilmente da un binario del kernel rotto.
Ho appena avviato il mio PC con hardware praticamente nuovo di zecca. Ho eseguito Debian 6.0 AMD64 in precedenza, e non ho apportato alcuna modifica (letteralmente; ho appena scollegato i dischi rigidi dalla vecchia scheda madre e li ho ricollegati a quello nuovo), ma ho trovato qualcosa di curioso:
- Ho installato fisicamente 4 x 8 GB di RAM
- L'installazione UEFI / BIOS riporta 16383 MB di RAM
- Linux
free -m
riporta 2985 MB di RAM
2985 MB sembrano troppo vicini al magico segno da 3 GB per essere puramente una coincidenza, ma le uname -r
stampe 2.6.32-5-amd64
; chiaramente un kernel a 64 bit, che è tutto ciò che è mai stato installato sull'unità di sistema che sto usando. La nuova scheda madre è un Asus M5A97 Pro, che ha quattro slot DDR3 che presumibilmente supportano moduli da 8 GB. I moduli di memoria stessi sono identici, quattro Corsair XMS3 PC12800 da 8 GB, acquistati insieme.
Non ho guardato in dettaglio l'installazione UEFI in dettaglio, ma l'ho sfogliato e non ho visto nulla che sembrava che avrebbe dovuto essere modificato per abilitare grandi quantità di RAM.
Modifica: ulteriore conferma che sto davvero correndo a 64 bit:
# file `which free`
/usr/bin/free: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
#
Che succede e cosa posso fare al riguardo?
Modifica 2: dmesg, dmidecode e meminfo, come richiesto. Non ho accesso fisico al sistema in questo momento, quindi dovrò aspettare fino a stasera per estrarre alcuni moduli e vedere cosa fa. (Si noti che dmidecode riporta 3 x 8 GB più uno slot DIMM vuoto. Si noti inoltre il messaggio di mancata corrispondenza MTRR dal kernel, che porta a una perdita di 13 GB, che almeno si somma a ciò che la scheda madre stessa sta segnalando.)
# dmidecode --type memory
# dmidecode 2.9
SMBIOS 2.7 present.
Handle 0x0026, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 32 GB
Error Information Handle: Not Provided
Number Of Devices: 4
Handle 0x0028, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x0026
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM0
Bank Locator: BANK0
Type: <OUT OF SPEC>
Type Detail: Synchronous
Speed: 1333 MHz (0.8 ns)
Manufacturer: Manufacturer0
Serial Number: SerNum0
Asset Tag: AssetTagNum0
Part Number: Array1_PartNumber0
Handle 0x002A, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x0026
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM1
Bank Locator: BANK1
Type: <OUT OF SPEC>
Type Detail: Synchronous
Speed: 1333 MHz (0.8 ns)
Manufacturer: Manufacturer1
Serial Number: SerNum1
Asset Tag: AssetTagNum1
Part Number: Array1_PartNumber1
Handle 0x002C, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x0026
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: None
Locator: DIMM2
Bank Locator: BANK2
Type: <OUT OF SPEC>
Type Detail: Synchronous
Speed: 1333 MHz (0.8 ns)
Manufacturer: Manufacturer2
Serial Number: SerNum2
Asset Tag: AssetTagNum2
Part Number: Array1_PartNumber2
Handle 0x002E, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x0026
Error Information Handle: Not Provided
Total Width: Unknown
Data Width: 64 bits
Size: No Module Installed
Form Factor: DIMM
Set: None
Locator: DIMM3
Bank Locator: BANK3
Type: Unknown
Type Detail: Synchronous
Speed: Unknown
Manufacturer: Manufacturer3
Serial Number: SerNum3
Asset Tag: AssetTagNum3
Part Number: Array1_PartNumber3
#
======================================================================
# cat /proc/meminfo
MemTotal: 3056820 kB
MemFree: 1470820 kB
Buffers: 390204 kB
Cached: 194660 kB
SwapCached: 0 kB
Active: 488024 kB
Inactive: 419096 kB
Active(anon): 231112 kB
Inactive(anon): 96660 kB
Active(file): 256912 kB
Inactive(file): 322436 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 8 kB
Writeback: 0 kB
AnonPages: 322320 kB
Mapped: 33012 kB
Shmem: 5472 kB
Slab: 613952 kB
SReclaimable: 597404 kB
SUnreclaim: 16548 kB
KernelStack: 2384 kB
PageTables: 19472 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1528408 kB
Committed_AS: 621464 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 294484 kB
VmallocChunk: 34359429080 kB
HardwareCorrupted: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 9216 kB
DirectMap2M: 2054144 kB
DirectMap1G: 1048576 kB
#
======================================================================
# dmesg | grep -i memory
[ 0.000000] WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13295MB of RAM.
[ 0.000000] WARNING: at /tmp/buildd/linux-2.6-2.6.32/debian/build/source_amd64_none/arch/x86/kernel/cpu/mtrr/cleanup.c:1092 mtrr_trim_uncached_memory+0x2e6/0x311()
[ 0.000000] [<ffffffff814f7f1e>] ? mtrr_trim_uncached_memory+0x2e6/0x311
[ 0.000000] [<ffffffff814f7f1e>] ? mtrr_trim_uncached_memory+0x2e6/0x311
[ 0.000000] [<ffffffff814f7f1e>] ? mtrr_trim_uncached_memory+0x2e6/0x311
[ 0.000000] initial memory mapped : 0 - 20000000
[ 0.000000] init_memory_mapping: 0000000000000000-00000000bdf00000
[ 0.000000] PM: Registered nosave memory: 000000000009d000 - 000000000009e000
[ 0.000000] PM: Registered nosave memory: 000000000009e000 - 00000000000a0000
[ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000
[ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000
[ 0.000000] PM: Registered nosave memory: 00000000bd94d000 - 00000000bd99c000
[ 0.000000] PM: Registered nosave memory: 00000000bd99c000 - 00000000bd9a6000
[ 0.000000] PM: Registered nosave memory: 00000000bd9a6000 - 00000000bdade000
[ 0.000000] PM: Registered nosave memory: 00000000bdade000 - 00000000bdaef000
[ 0.000000] PM: Registered nosave memory: 00000000bdaef000 - 00000000bdb02000
[ 0.000000] PM: Registered nosave memory: 00000000bdb02000 - 00000000bdb04000
[ 0.000000] PM: Registered nosave memory: 00000000bdb04000 - 00000000bdb0d000
[ 0.000000] PM: Registered nosave memory: 00000000bdb0d000 - 00000000bdb13000
[ 0.000000] PM: Registered nosave memory: 00000000bdb13000 - 00000000bdb75000
[ 0.000000] PM: Registered nosave memory: 00000000bdb75000 - 00000000bdd78000
[ 0.000000] Memory: 3046732k/3111936k available (3075k kernel code, 4728k absent, 60476k reserved, 1879k data, 584k init)
[ 1.636730] Freeing initrd memory: 9501k freed
[ 1.647370] Freeing unused kernel memory: 584k freed
[ 4.876602] [TTM] Zone kernel: Available graphics memory: 1528410 kiB.
[ 4.876615] [drm] radeon: 256M of VRAM memory ready
[ 4.876617] [drm] radeon: 512M of GTT memory ready.
[ 25.571018] VBoxDrv: dbg - g_abExecMemory=ffffffffa051d6c0
#
Grepping per e820 mostra un sacco di gamme, completando con e820 update range: 00000000bdf00000 - 000000043f000000 (usable) ==> (reserved)
. 43f000000 è 16 GiB, bdf00000 è 3039 MiB. Io non vedo che essere una coincidenza.
# dmesg | grep -i e820
[ 0.000000] BIOS-e820: 0000000000000000 - 000000000009d800 (usable)
[ 0.000000] BIOS-e820: 000000000009d800 - 00000000000a0000 (reserved)
[ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 00000000bd94d000 (usable)
[ 0.000000] BIOS-e820: 00000000bd94d000 - 00000000bd99c000 (ACPI NVS)
[ 0.000000] BIOS-e820: 00000000bd99c000 - 00000000bd9a6000 (ACPI data)
[ 0.000000] BIOS-e820: 00000000bd9a6000 - 00000000bdade000 (reserved)
[ 0.000000] BIOS-e820: 00000000bdade000 - 00000000bdaef000 (ACPI NVS)
[ 0.000000] BIOS-e820: 00000000bdaef000 - 00000000bdb02000 (reserved)
[ 0.000000] BIOS-e820: 00000000bdb02000 - 00000000bdb04000 (ACPI NVS)
[ 0.000000] BIOS-e820: 00000000bdb04000 - 00000000bdb0d000 (reserved)
[ 0.000000] BIOS-e820: 00000000bdb0d000 - 00000000bdb13000 (ACPI NVS)
[ 0.000000] BIOS-e820: 00000000bdb13000 - 00000000bdb75000 (reserved)
[ 0.000000] BIOS-e820: 00000000bdb75000 - 00000000bdd78000 (ACPI NVS)
[ 0.000000] BIOS-e820: 00000000bdd78000 - 00000000bdf00000 (usable)
[ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
[ 0.000000] BIOS-e820: 00000000fec10000 - 00000000fec11000 (reserved)
[ 0.000000] BIOS-e820: 00000000fec20000 - 00000000fec21000 (reserved)
[ 0.000000] BIOS-e820: 00000000fed00000 - 00000000fed01000 (reserved)
[ 0.000000] BIOS-e820: 00000000fed61000 - 00000000fed71000 (reserved)
[ 0.000000] BIOS-e820: 00000000fed80000 - 00000000fed90000 (reserved)
[ 0.000000] BIOS-e820: 00000000fef00000 - 0000000100000000 (reserved)
[ 0.000000] BIOS-e820: 0000000100001000 - 000000043f000000 (usable)
[ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
[ 0.000000] e820 update range: 00000000bdf00000 - 000000043f000000 (usable) ==> (reserved)
[ 0.000000] update e820 for mtrr
#
EDIT 3/4 - parziale successo:
- L'aggiornamento del BIOS UEFI dalla versione
0705 x64 08/23/2011
a1007 02/10/2012
non ha aiutato: lo stesso identico problema è rimasto. - La rimozione di un modulo DIMM (ho pensato a quale slot fosse il n. 4: quello più lontano dalla CPU) ha permesso al BIOS di rilevare e utilizzare i restanti 24 GB, anche se una configurazione a tre DIMM non è "consigliata" secondo diagramma nel manuale dell'utente. In particolare, l'inserimento di uno dei DIMM rimanenti nello slot n. 4 ha ancora consentito l'utilizzo, quindi lo slot va bene. Riposizionare il DIMM "originale" in quello slot mi ha riportato al punto di partenza.
- L'avvio dal CD di installazione di Debian 6.0.3 AMD64 in un ambiente di ripristino e il controllo
dmesg
dell'output non mostra errori MTRR simili . Inoltre, in quell'ambiente, con 3 x 8 GB installati, 24 GB (più o meno epsilon volte più o meno; non ho fatto la matematica esatta) si presentano come utilizzabili secondofree
. - L'aggiornamento / reinstallazione del kernel (era disponibile un aggiornamento minore) sembra aver risolto anche i problemi di MTRR.
dmesg
ora riporta 26198016 KB totali e nessun errore MTRR, che è in linea con quello che mi aspetterei con 3 x 8 GB installati.free -m
ora riporta 24114 MB di RAM totale, che francamente è abbastanza vicino per me.
Questo ha l'odore di un DIMM infilato, oltre a un kernel che per qualsiasi motivo è stato danneggiato; quest'ultimo potrebbe essere accaduto durante l'interruzione di corrente (anche se devo dire che è un modo strano che il kernel si rompa!). Il modulo DIMM non funzionante tornerà al rivenditore non appena parlerò con loro (speriamo domani).
(si spera) MODIFICA FINALE
Avevo RMA una delle due coppie di DIMM, è stata accettata dal rivenditore come danneggiata e mi hanno inviato una nuova coppia, che sembra funzionare bene. Quindi ora sono praticamente al punto in cui intendevo originariamente quasi un mese fa (anche se una grande parte di quel tempo non era realmente dovuta al rivenditore), con 32 GB di RAM utilizzabili; free -m
riporta 32194 MB di memoria totale e il kernel riporta 34586624k
RAM all'inizializzazione, che sono entrambi in linea con le mie aspettative.
dmidecode --type memory
e le prime cento righe circa dell'output di dmesg
(assicurati di includere tutto ciò che sembra riguardare la memoria).
WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13295MB of RAM.
Bene, c'è il tuo 13G mancante.