Chỉ 3,2 GB RAM 4GB được phát hiện trên Debian 64 bit


9

Tôi đang chạy Debian Squeeze (x64):

# uname -srvmo
Linux 2.6.32-5-amd64 #1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64 GNU/Linux

Tôi có 2 thanh DDR2 2 GB tương thích trong bo mạch chủ G31M-S của mình . Nó hỗ trợ lên tới 8GB:

nhập mô tả hình ảnh ở đây

Vì đây là một máy chủ, tôi không thực sự quan tâm đến đồ họa. Vì vậy, tôi đặt nó ở mức thấp nhất.

Internal Graphics Mode Select: Auto
                               Enabled, 1MB   <--
                               Enabled, 8MB
DVMT Mode Select:              Fixed Mode     <--
                               Auto
    DVMT/FIXED Memory:         128MB          <--
                               256MB

nhập mô tả hình ảnh ở đây

Tuy nhiên, Linux chỉ phát hiện bộ nhớ 3.19GiB:

# cat /proc/meminfo
MemTotal:        3350712 kB
...

Nhìn vào bản đồ E820 :

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
[    0.000000]  BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 00000000cfdb0000 (usable)
[    0.000000]  BIOS-e820: 00000000cfdb0000 - 00000000cfdc0000 (ACPI data)
[    0.000000]  BIOS-e820: 00000000cfdc0000 - 00000000cfdf0000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000cfdf0000 - 00000000cfe00000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000ff380000 - 0000000100000000 (reserved)
[    0.000000] DMI present.
[    0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it.
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)

Và làm một bài toán nhỏ:

>>> ((0x9F800 - 0x10000) + (0xCF6B0000 - 0x100000)) / 1024.0 / 1024.0 / 1024.0
3.240476608276367

Chúng tôi nhận được chỉ về cùng một câu trả lời.

Tôi đang thiếu gì?


Tôi không hoàn toàn mua đối số "không gian địa chỉ PCI". Lấy một trong hai thanh 2GB ra, màn hình thiết lập hiển thị 2048MB.

# cat /proc/meminfo
MemTotal:        2058432 kB

Đó là 1,96GB.

Bản đồ E820 một lần nữa:

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
[    0.000000]  BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 000000007fdb0000 (usable)
[    0.000000]  BIOS-e820: 000000007fdb0000 - 000000007fdc0000 (ACPI data)
[    0.000000]  BIOS-e820: 000000007fdc0000 - 000000007fdf0000 (ACPI NVS)
[    0.000000]  BIOS-e820: 000000007fdf0000 - 000000007fe00000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000ff380000 - 0000000100000000 (reserved)
[    0.000000] DMI present.
[    0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it.
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)

Và toán học ...

>>> ((0x9F800 - 0x10000) + (0x7fdb0000 - 0x100000)) / 1024.0 / 1024.0 / 1024.0
1.9973125457763672

Vì vậy, tôi đã nhận được 2GB / 2GB. /proc/cpuinfocho thấy bộ xử lý của tôi hỗ trợ địa chỉ vật lý 36 bit. 2 ^ 36 = 64GB, mà tôi thậm chí không gần.


# ./smem -R 4G -w
Area                           Used      Cache   Noncache
firmware/hardware            843592          0     843592
kernel image                      0          0          0
kernel dynamic memory        181116     134616      46500
userspace memory             287784      19736     268048
free memory                 2881812    2881812          0

Đảm bảo ánh xạ lại bộ nhớ được BẬT trong BIOS.
David Schwartz

@DavidSchwartz Tôi đã thử bật nó lên và kernel hoảng loạn khi khởi động. Tôi có thể thử điều đó với một đĩa CD trực tiếp.
Jonathon Reinhart

@DavidSchwartz Bạn hoàn toàn chính xác. Bật ánh xạ lại bộ nhớ dường như đã thực hiện các mẹo. Không bật nó, Memtest86 + báo cáo ~ 3300 MB. Khi được bật, nó báo cáo 4086 MB. Nếu bạn đưa ra câu trả lời, tôi sẽ sẵn sàng chấp nhận.
Jonathon Reinhart

Câu trả lời:


5

Bạn cần bật BẬT bộ nhớ BẬT trong BIOS. Mặt khác, nó sẽ không ánh xạ lại bộ nhớ trên ranh giới 4GB và một số bộ nhớ sẽ bị che lấp bởi ánh xạ phần cứng.


Đây là vấn đề. Bật ánh xạ lại bộ nhớ dường như đã thực hiện các mẹo. Không bật nó, Memtest86 + báo cáo ~ 3300 MB. Khi được bật, nó báo cáo 4086 MB.
Jonathon Reinhart

Tương tự, trước khi bật Memory Hole Remapping(AMIBIOS), POST sẽ báo cáo khoảng 3,3 GiB, trong khi DMI vẫn liệt kê hai mô-đun 2 GiB mỗi cái.
njsg

5

PCI cũng sử dụng một số không gian địa chỉ. Cả thẻ PCI và thiết bị PCI đều tích hợp vào bo mạch chủ (như chipset).

Thông thường, điều này có nghĩa là trong số 4GB chỉ có 3 đến 3 GB GB, ngay cả khi bạn không sử dụng GPU hiện đại có nhiều RAM trên bo mạch.


Tôi gần như bỏ qua thực tế đó ... Ý tôi là 0,8 GB? Tuy nhiên, đỉnh của bản đồ e820 là 0x100000000 == 1<<32điều thú vị. Vậy tại sao BIOS không ánh xạ phần còn lại của RAM lên trên 1 << 32? Đó là Celeron E3400 và /proc/cpuinfonói rằng address sizes : 36 bits physical, 48 bits virtualĐiều đó sẽ tốt cho 64GB. ( (1<<36) / (1024*1024*1024) == 64)
Jonathon Reinhart

Hướng dẫn sử dụng bo mạch chủ Tyan cũ của tôi là cuốn duy nhất có vẻ cảnh báo tôi rằng mặc dù nó hỗ trợ RAM 4GB, nhưng nó sẽ không bao giờ để lộ tất cả những điều đó cho HĐH. Tùy thuộc vào các thẻ mở rộng đã sử dụng (PCI cũ, 66Mhz, 64 bit), nó sẽ tiết lộ khoảng 3,3 GB dung lượng có thể sử dụng. Tôi chưa bao giờ phải kiểm tra rằng, RAM 512MB là tất cả những gì tôi có thể mua được. (Điều này đã trở lại khi bo mạch chủ CPU kép này vẫn có nghĩa là sử dụng hai CPU vật lý. Mọi thứ có thể đã thay đổi kể từ đó và PCIe có thể không có cùng giới hạn. Nhưng hầu hết các bo mạch chủ vẫn có cả PCI và PCIe).
Hennes

Xem chỉnh sửa của tôi. Tôi nghĩ vấn đề là BIOS từ chối báo cáo bất kỳ bộ nhớ nào 1<<32hoặc hạt nhân này không biết cách hiểu nó.
Jonathon Reinhart

Bạn đã xem xét bộ nhớ chia sẻ được sử dụng bởi đồ họa nội bộ của bạn? Nếu bạn đã smemcài đặt, hãy thử smem -R 4G -wtổng quan chung về bộ nhớ khả dụng / đã sử dụng.
Izzy

1
@Hennes Câu trả lời này sẽ có ý nghĩa hoàn hảo nếu đây là hệ thống 32 bit. Nhưng không dành cho 64 bit (với địa chỉ bộ nhớ vật lý 36 bit).
Jonathon Reinhart

2

RAM bị thiếu của bạn được sử dụng bởi phần sụn:

# ./smem -R 4G -w
Area                           Used      Cache   Noncache
firmware/hardware            843592          0     843592
kernel image                      0          0          0
kernel dynamic memory        181116     134616      46500
userspace memory             287784      19736     268048
free memory                 2881812    2881812          0

Tổng hợp:

echo $((181116 + 287784 + 2881812 + 843592))
4194304

Vì vậy, bạn thấy, nó tổng hợp lên đến 4GB. Và đây là ~ 800 triệu bạn báo cáo bị thiếu:

firmware/hardware            843592          0     843592

Vâng, và tôi không ngạc nhiên về điều đó. Câu hỏi là, tại sao BIOS không báo cáo rằng 800 MB ram ở trên 0x100000000 (1<<32)? Nó hoạt động như thể nó là một hệ thống 32 bit.
Jonathon Reinhart

Vâng, tôi nghĩ rằng câu trả lời này là hợp lệ, nhưng câu hỏi cuối cùng vẫn còn :-)
Jonathon Reinhart

Vậy điều gì smem -R 2G -wnói lên chỉ với 2G trong máy (đặc biệt là liên quan đến phần sụn / phần cứng, vì đó dường như là phần "thiếu 800M" đi cùng với 4G)? Sẽ khá buồn cười nếu phần sụn đột nhiên không còn cần đến 800M nữa ...
Izzy

Nó có thể phải làm với AMI BIOS detected: BIOS may corrupt low RAM, working around it.- và nhận xét Wikipedia (từ e820link của bạn) "Đôi khi BIOS bị lỗi và báo cáo sai bộ nhớ dành riêng. Điều này có thể khiến phần mềm kiểm tra bộ nhớ, như Memtest, báo cáo lỗi." ? EDIT: À, không - sẽ chỉ chiếm 64 nghìn chứ không phải 800 triệu ...
Izzy

Tôi có thể kiểm tra khi về đến nhà, nhưng tôi cho rằng nó sẽ nói điều tương tự. Nhìn vào bản đồ E820 cho 2GB. Theo quan sát, nó trông gần giống nhau, ngoại trừ phạm vi dành riêng / ACPI thấp hơn trong không gian addr (một số trong số chúng).
Jonathon Reinhart
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.