Masalah saya disebabkan oleh modul memori yang rusak dan sangat mungkin kernel biner yang rusak.
Saya baru saja mem-boot PC saya dengan perangkat keras yang pada dasarnya baru. Saya telah menjalankan Debian 6.0 AMD64 sebelumnya, dan tidak ada perubahan di sana (secara harfiah; Saya baru mencabut hard disk dari motherboard lama dan menghubungkannya kembali ke yang baru), tetapi menemukan sesuatu yang aneh:
- Saya telah memasang RAM 4 x 8 GB secara fisik
- Pengaturan UEFI / BIOS melaporkan RAM 16383 MB
- Linux
free -m
melaporkan 2985 MB RAM
2985 MB tampaknya terlalu dekat dengan tanda 3 GB ajaib untuk itu menjadi kebetulan semata, tetapi uname -r
dicetak 2.6.32-5-amd64
; jelas sebuah kernel 64-bit, yang adalah semua yang pernah diinstal pada drive sistem yang saya gunakan. Motherboard baru adalah Asus M5A97 Pro, yang memiliki empat slot DDR3 yang seharusnya mendukung modul 8 GB. Modul memori itu sendiri identik, empat Corsair XMS3 PC12800 8 GB, dibeli bersama.
Saya belum melihat-lihat pengaturan UEFI secara detail, tetapi memang menelusuri dan melihat tidak ada yang tampak seperti itu perlu diubah untuk memungkinkan sejumlah besar RAM.
Sunting: Konfirmasi lebih lanjut bahwa saya benar-benar menjalankan 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
#
Ada apa dengan ini, dan apa yang bisa saya lakukan?
Sunting 2: dmesg, dmidecode dan meminfo, seperti yang diminta. Saya tidak memiliki akses fisik ke sistem sekarang, jadi harus menunggu sampai malam ini untuk mengeluarkan beberapa modul dan melihat apa yang dilakukannya. (Perhatikan bahwa dmidecode melaporkan 3 x 8GB plus satu slot DIMM kosong. Juga catat pesan ketidakcocokan MTRR dari kernel, yang menyebabkan hilangnya 13 GB, yang setidaknya menambah dengan apa yang dilaporkan motherboard itu sendiri.)
# 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 untuk e820 menunjukkan banyak rentang, dengan topping out e820 update range: 00000000bdf00000 - 000000043f000000 (usable) ==> (reserved)
. 43f000000 adalah 16 GiB, bdf00000 adalah 3039 MiB. Saya tidak melihat itu kebetulan.
# 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 - keberhasilan sebagian:
- Memutakhirkan UEFI BIOS dari versi
0705 x64 08/23/2011
menjadi1007 02/10/2012
tidak membantu: masalah yang sama tetap terjadi. - Menghapus satu modul DIMM (saya menebak di mana slot # 4: yang terjauh dari CPU) memungkinkan BIOS mendeteksi dan menggunakan 24 GB yang tersisa, walaupun konfigurasi tiga DIMM tidak "disarankan" sesuai dengan diagram dalam manual pengguna. Khususnya, tempat duduk salah satu DIMM yang tersisa di slot # 4 masih memungkinkan untuk digunakan, sehingga slotnya baik-baik saja. Mengembalikan DIMM "asli" ke dalam slot itu menjatuhkan saya kembali pada titik awal.
- Mem-boot dari CD instalasi Debian 6.0.3 AMD64 ke lingkungan penyelamatan dan memeriksa
dmesg
hasilnya tidak menunjukkan kesalahan MTRR serupa . Juga, dalam lingkungan itu, dengan 3 x 8GB diinstal, 24 GB (plus atau minus epsilon kali pi atau sekitar; Saya tidak melakukan matematika yang tepat) muncul sebagai dapat digunakan sesuai denganfree
. - Memutakhirkan / menginstal ulang kernel (ada peningkatan kecil yang tersedia) tampaknya telah memperbaiki masalah MTRR juga.
dmesg
sekarang melaporkan total 26198016 KB, dan tidak ada kesalahan MTRR, yang sesuai dengan apa yang saya harapkan dengan 3 x 8GB diinstal.free -m
sekarang melaporkan 24114 MB total RAM, yang sejujurnya cukup dekat untuk saya.
Baunya seperti DIMM muntah, plus kernel yang karena alasan apa pun rusak; yang terakhir mungkin telah terjadi selama pemadaman listrik (meskipun saya harus mengatakan itu adalah cara yang aneh untuk memecah kernel!). DIMM yang tidak berfungsi akan kembali ke pengecer segera setelah saya berbicara dengan mereka (semoga besok).
(semoga) EDIT FINAL
Saya RMA akan salah satu dari dua pasang DIMM, itu diterima oleh reseller sebagai rusak dan mereka mengirimi saya pasangan baru, yang tampaknya berfungsi dengan baik. Jadi saya sekarang pada dasarnya di mana saya awalnya dimaksudkan hampir sebulan yang lalu (meskipun sebagian besar waktu itu tidak benar-benar karena reseller), dengan 32 GB RAM dapat digunakan; free -m
melaporkan 32194 MB total memori, dan kernel melaporkan 34586624k
RAM pada inisialisasi, yang keduanya sesuai dengan harapan saya.
dmidecode --type memory
dan seratus baris pertama atau lebih dari outputdmesg
(pastikan untuk memasukkan apa pun yang terlihat seperti ini tentang memori).WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13295MB of RAM.
Nah, ada 13G Anda yang hilang.Jawaban:
Pertama, jika BIOS / UEFI Anda tidak mendeteksi RAM Anda dengan benar, maka OS Anda tidak akan melakukan yang lebih baik. Tidak perlu melangkah lebih jauh jika BIOS Anda menampilkan informasi yang salah tentang pengaturan Anda.
=> Anda mungkin memiliki setidaknya masalah perangkat keras.
EDIT : Dari dmesg Anda | memori grep, tampaknya Anda sebenarnya memiliki masalah perangkat keras, yang terletak di bios tertanam Anda. Setidaknya, Linux telah mendeteksi dan memperingatkan Anda tentang hal itu:
WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13295MB of RAM
. Tampaknya juga salah satu dari modul 4 ram Anda dikenali atau dimasukkan secara tidak benar.Anda dapat melaporkannya ke pabrik Anda, memutakhirkan bios Anda dan mengganti motherboard Anda. Ada banyak kemungkinan bahwa dengan RAM yang lebih sedikit, Anda tidak akan menemukan bug ini.
Sebagai catatan tambahan, Anda mungkin setuju dengan kutipan terkenal dari Linus Torvalds ini tentang pembuat BIOS :
Kedua, ketika BIOS Anda OK dengan apa yang Anda miliki di motherboard, Anda dapat melihatnya di Linux
/proc/meminfo
. Seringkali sangat jelas tentang apa yang diketahui dan dilakukan sistem linux Anda dengan memori Anda. Inilah yang saya miliki di RAM 64bit / 8 Gb saya:Tentang proses boot dan apa yang digunakan / dibebaskan oleh kernel linux, Anda dapat mengambilnya dari
dmesg
:Sunting : Seperti yang dikatakan Gilles, dengan
dmidecode --type memory
, Anda dapat memiliki detail tentang konfigurasi perangkat keras Anda. Sepertinya ini untuk sistem 4x2Gb:sumber
Cari / var / log / dmesg untuk peta memori (grep untuk 'e820') dan hitung berapa banyak memori yang dilaporkan ada yang dapat digunakan. Inilah yang dikatakan BIOS untuk memuat OS untuk memori.
(Ini hanya benar untuk boot gaya lama. Saya tidak tahu bagaimana memori dilaporkan jika boot gaya EFI digunakan, tapi saya kira ada laporan serupa.)
Juga, melaporkan 16GB oleh BIOS ketika 32GB diinstal berarti ada beberapa keanehan dalam pengaturan memori. Coba kurangi memori yang terpasang menjadi 4 atau 8 GB dan bandingkan efeknya.
sumber
Banyak papan AMD yang lebih tua mungkin memiliki 4 slot tetapi jika Anda mengisi slot terakhir Anda meminta masalah. Ini masalah chipset yang tidak bisa diperbaiki.
sumber