Linux 64-bit không nhận ra RAM của tôi trong khoảng từ 3 đến 32 GB


8

Vấn đề của tôi là do mô-đun bộ nhớ bị lỗi và rất có thể là lỗi nhị phân kernel.


Tôi vừa mới khởi động PC với phần cứng hoàn toàn mới. Tôi đã chạy Debian 6.0 AMD64 trước đó và không có thay đổi gì cả (theo nghĩa đen; tôi chỉ rút các ổ đĩa cứng khỏi bo mạch chủ cũ và kết nối lại chúng với cái mới), nhưng thấy một điều tò mò:

  • Tôi đã cài đặt vật lý 4 x 8 GB RAM
  • Thiết lập UEFI / BIOS báo cáo 16383 MB RAM
  • Linux free -mbáo cáo 2985 MB RAM

2985 MB dường như quá gần với mốc 3 GB huyền diệu đối với nó hoàn toàn là sự trùng hợp ngẫu nhiên, nhưng được uname -rin ra 2.6.32-5-amd64; rõ ràng là kernel 64 bit, đó là tất cả những gì đã được cài đặt trên ổ đĩa hệ thống tôi đang sử dụng. Bo mạch chủ mới là Asus M5A97 Pro, có bốn khe DDR3 được cho là hỗ trợ các mô-đun 8 GB. Các mô-đun bộ nhớ giống hệt nhau, bốn Corsair XMS3 PC12800 8 GB, được mua cùng nhau.

Tôi đã không nhìn xung quanh thiết lập UEFI một cách chi tiết, nhưng đã duyệt qua nó và thấy không có gì có vẻ như nó cần thay đổi để kích hoạt một lượng lớn RAM.

Chỉnh sửa: Xác nhận thêm rằng tôi thực sự đang chạy 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
#

Có chuyện gì với điều này, và tôi có thể làm gì với nó?

Chỉnh sửa 2: dmesg, dmidecode và meminfo, theo yêu cầu. Tôi không có quyền truy cập vật lý vào hệ thống ngay bây giờ, vì vậy sẽ phải đợi đến tối nay để rút ra một số mô-đun và xem những gì nó làm. .

# 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 cho e820 cho thấy một loạt các phạm vi, đứng đầu với e820 update range: 00000000bdf00000 - 000000043f000000 (usable) ==> (reserved). 43f000000 là 16 GiB, bdf00000 là 3039 MiB. Tôi không thấy đó là sự trùng hợp.

# 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 - thành công một phần:

  • Nâng cấp BIOS UEFI từ phiên bản 0705 x64 08/23/2011lên 1007 02/10/2012không giúp được gì: vấn đề chính xác vẫn còn.
  • Xóa một mô-đun DIMM (tôi đã đoán được may mắn ở vị trí nào là số 4: cách xa CPU nhất) cho phép BIOS phát hiện và sử dụng 24 GB còn lại, mặc dù cấu hình ba DIMM không được "khuyến nghị" theo sơ đồ trong hướng dẫn sử dụng. Đáng chú ý, chỗ ngồi một trong những DIMM còn lại trong khe số 4 vẫn cho phép nó được sử dụng, vì vậy khe cắm vẫn ổn. Đặt lại DIMM "gốc" vào khe đó khiến tôi quay lại điểm xuất phát.
  • Khởi động từ đĩa CD cài đặt Debian 6.0.3 AMD64 vào môi trường cứu hộ và kiểm tra dmesgđầu ra của nó cho thấy không có lỗi MTRR tương tự . Ngoài ra, trong môi trường đó, với 3 x 8GB được cài đặt, 24 GB (cộng hoặc trừ epsilon lần pi hoặc khoảng đó; tôi đã không làm toán chính xác) hiển thị như có thể sử dụng được free.
  • Nâng cấp / cài đặt lại kernel (có sẵn một bản nâng cấp nhỏ) dường như cũng đã khắc phục các sự cố MTRR. dmesghiện báo cáo tổng cộng 26198016 KB và không có lỗi MTRR, phù hợp với những gì tôi mong đợi với 3 x 8GB được cài đặt. free -mbây giờ báo cáo tổng dung lượng RAM 24114 MB, khá thẳng thắn là đủ gần với tôi.

Cái này có mùi giống như một DIMM bị khóa, cộng với một hạt nhân vì bất kỳ lý do gì đã bị hỏng; điều đó có thể đã xảy ra trong thời gian mất điện (mặc dù tôi phải nói rằng đó là một cách kỳ lạ để hạt nhân bị phá vỡ!). DIMM không hoạt động sẽ quay trở lại đại lý ngay khi tôi nói chuyện với họ (hy vọng vào ngày mai).

(hy vọng) EDIT CUỐI CÙNG

Tôi là một trong hai cặp DIMM, nó được người bán lại chấp nhận là bị hỏng và họ đã gửi cho tôi một cặp mới, có vẻ như chỉ hoạt động tốt. Vì vậy, bây giờ tôi về cơ bản là nơi tôi dự định ban đầu gần một tháng trước (mặc dù một phần lớn thời gian đó không thực sự là do người bán lại), với RAM 32 GB có thể sử dụng được; free -mbáo cáo tổng bộ nhớ 32194 MB và kernel báo cáo 34586624kRAM khi khởi tạo, cả hai đều phù hợp với mong đợi của tôi.


2
Từ tuyên bố đầu tiên của bạn, có vẻ như bạn đã chuyển các đĩa cứng có hệ điều hành được cài đặt sang một bo mạch hệ thống mới? Một thử nghiệm thực sự tốt sẽ là tải xuống một bản phân phối trực tiếp và khởi động vào nó. Slax, DSL, Ubuntu, hoặc bất cứ điều gì. Nếu điều đó nhận ra dung lượng RAM phù hợp thì có khả năng bạn sẽ gặp phải các vấn đề HAL / udev. Tại thời điểm đó, bạn sẽ tiết kiệm được nhiều thời gian sao lưu và cài đặt lại hơn là cố gắng sửa nó. Trừ khi bạn là một người đam mê như tôi và muốn lãng phí hàng giờ hoặc hàng ngày cho nó:}
2bc

2
Vui lòng gửi đầu ra của dmidecode --type memoryvà hàng trăm dòng đầu tiên hoặc hơn đầu ra của dmesg(đảm bảo bao gồm mọi thứ trông giống như về bộ nhớ).
Gilles 'SO- ngừng trở thành ác quỷ'

1
WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13295MB of RAM.Vâng, có 13G mất tích của bạn.
Mat

1
@Mat, tuy nhiên không thiếu 16G khác. Những người có thể sẽ mất một chút tìm kiếm xung quanh cho.
một CVn

1
Tôi sẽ quan tâm đến những gì một debian sống (/ ubfox, vì đó là thứ gần nhất tiếp theo) sẽ cho biết, vì nó có thể được sử dụng để dễ dàng phân biệt giữa các vấn đề với phần cứng và các vấn đề với cấu hình của bạn.
dtech

Câu trả lời:


14

Đầu tiên, nếu BIOS / UEFI của bạn không phát hiện chính xác RAM của bạn, thì HĐH của bạn sẽ không làm gì tốt hơn. Không cần phải đi thêm nữa nếu BIOS của bạn hiển thị thông tin không chính xác về thiết lập của bạn.

=> Bạn có thể có ít nhất một vấn đề phần cứng.

EDIT : Từ dmesg của bạn | Bộ nhớ grep, có vẻ như trên thực tế bạn có một vấn đề về phần cứng, nằm trong bios nhúng của bạn. Ít nhất, Linux đã phát hiện ra nó và cảnh báo bạn về nó : WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13295MB of RAM. Dường như một trong 4 mô-đun ram của bạn được nhận dạng hoặc chèn không chính xác.

Bạn có thể báo cáo cho nhà sản xuất, nâng cấp bios và thay đổi bo mạch chủ của bạn. Có nhiều khả năng với ít RAM hơn, bạn sẽ không gặp phải lỗi này.

Lưu ý phụ, bạn có thể đồng ý với câu nói nổi tiếng này của Linus Torvalds về các nhà sản xuất BIOS :

Những người viết BIOS luôn là những con khỉ nghiện crack hoàn toàn bất tài

Thứ hai, khi BIOS của bạn ổn với những gì bạn thực sự có trên bo mạch chủ của mình, bạn có thể xem Linux tại /proc/meminfo. Nó thường rất rõ ràng về những gì hệ thống linux của bạn biết và làm với bộ nhớ của bạn. Đây là những gì tôi có trên RAM 64 bit / 8 Gb của mình:

$ cat /proc/meminfo 
MemTotal:        8175652 kB
MemFree:         5476336 kB
Buffers:           63924 kB
Cached:          1943460 kB
SwapCached:            0 kB
[...]

Về quá trình khởi động và những gì được sử dụng / giải phóng bởi kernel linux, bạn có thể grep nó từ dmesg:

$ dmesg | grep Memory
[    0.000000] Memory: 8157672k/8904704k available (6138k kernel code, 534168k absent, 212864k reserved, 6896k data, 988k init)

EDIT : Như Gilles đã nói, với dmidecode --type memory, bạn có thể có chi tiết về cấu hình phần cứng của mình. Dường như điều này cho một hệ thống 4x2Gb:

$ sudo dmidecode --type memory
# dmidecode 2.9
SMBIOS 2.6 present.

Handle 0x0020, DMI type 16, 15 bytes
Physical Memory Array
    Location: System Board Or Motherboard
    Use: System Memory
    Error Correction Type: None
    Maximum Capacity: 32 GB
    Error Information Handle: Not Provided
    Number Of Devices: 4

Handle 0x0022, DMI type 17, 28 bytes
Memory Device
    Array Handle: 0x0020
    Error Information Handle: Not Provided
    Total Width: 64 bits
    Data Width: 64 bits
    Size: 2048 MB
    [...]
[This block is repeated for each module]

5

Tìm kiếm / var / log / dmesg cho bản đồ bộ nhớ (grep cho 'e820') và đếm xem có bao nhiêu bộ nhớ được báo cáo ở đó là có thể sử dụng được. Đây là những gì BIOS nói với hệ điều hành được tải cho bộ nhớ.

(Điều này chỉ đúng với khởi động kiểu cũ. Tôi không biết bộ nhớ được báo cáo như thế nào nếu khởi động theo kiểu EFI được sử dụng, nhưng tôi đoán có báo cáo tương tự.)

Ngoài ra, báo cáo 16GB bằng BIOS trong khi 32GB được cài đặt có nghĩa là một số điều kỳ lạ trong thiết lập bộ nhớ. Cố gắng giảm bộ nhớ đã cài đặt xuống 4 hoặc 8 GB và so sánh hiệu ứng.


Xem chỉnh sửa của tôi cho dữ liệu e820. Vật lý loại bỏ các mô-đun bộ nhớ để xem những gì sẽ phải chờ cho đến tối nay. Các mô-đun DDR3 duy nhất tôi có là 8 GB mỗi cái.
một CVn

Chà, dường như thế là đủ rồi - bạn có cả phần cứng và phần mềm hoạt động tốt. Hành động cuối cùng là cài đặt mô-đun bộ nhớ chính xác để lấp đầy nó và làm cho kênh đôi hoạt động. Xin chúc mừng.
Lấy

0

Nhiều bo mạch AMD cũ hơn có thể có 4 khe cắm nhưng nếu bạn điền vào khe cuối cùng thì bạn sẽ gặp rắc rối. Đây là một vấn đề chipset không thể khắc phục.


Tôi sẽ không chính xác coi Asus M5A97 Pro là bo mạch chủ "cũ hơn" (Tôi không biết ngày sản xuất chính xác của nó, nhưng nó dựa trên chipset AMD 970 và Wikipedia đặt dòng 900 vào ngày phát hành tháng 6 năm 2011, ít hơn hơn một năm trước khi câu hỏi này có mặt vào tháng 3 năm 2012). chạy từ phương tiện cài đặt cho thấy một bức tranh thực tế hoàn toàn khác theo quan điểm của HĐH. các vấn đề cuối cùng đã được giải quyết bằng cách thay thế mô-đun bộ nhớ bị lỗi bằng một mô-đun đang hoạt động và cài đặt lại kernel (như nó nói ngay ở đầu câu hỏi).
CVn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.