Tại sao hệ thống của tôi chỉ hiển thị 3,2 GiB RAM khi tôi chắc chắn có 4.0 GiB


12

Tôi đã cài đặt 2x2 GiB RAM.
Chạy memtest86từ menu khởi động grub xác nhận điều này .. memtest86 báo cáo không có lỗi.

Tuy nhiên, mỗi cách tôi kiểm tra bộ nhớ khả dụng của mình trong hệ thống Ubuntu 10.04 đang chạy, nó chỉ báo cáo khoảng 3,2 GiB.

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

Ai có RAM bị thiếu của tôi ?

Thông tin cập nhật: Bây giờ tôi vừa được bổ sung kép vào một phiên bản Ubuntu 10.04 khác trên cùng một phần cứng (tôi quên rằng tôi đã cài đặt nó nhiều tháng trước, cho các trường hợp khẩn cấp) :) .... Nó báo cáo 3.9 GiB, thông qua System Monitor...

Tôi đã đăng /var/log/messagesthông tin gần đây nhất của mình tại http://pastebin.ubfox.com/629246/


Bạn đang sử dụng loại kernel nào? Trừ khi bạn sử dụng 'bigmem' hoặc 'x86-64', bạn có thể không hiển thị tất cả RAM của mình cho hệ thống. Ngoài ra, một số tùy chọn BIOS ảnh hưởng đến khả năng hiển thị của tổng RAM. Sử dụng nhật ký / var / log / message của bạn (ngay từ đầu) để xem cách các vùng bộ nhớ được ánh xạ.
mbaitoff

Tôi không biết làm thế nào để giải thích /var/log/messages, nhưng tôi đã đăng thông tin gần đây nhất của mình ở đây: pastebin.ub Ubuntu.com/629246 .. có lẽ ai đó có thể tạo ra những cái đầu hoặc đuôi của nó :)
Peter.O

Là nhật ký từ hệ thống được báo cáo 3.2Gb, hoặc từ hệ thống được báo cáo 3.9Gb?
mbaitoff

Dòng 61,62 từ nhật ký của bạn hiển thị 3,2Gb khả dụng.
mbaitoff

Tôi có Ubuntu 10.04 với x86-64 (64 bit) được cài đặt trên máy 4Gb. Nó báo cáo 3964 Mb ('miễn phí -m'), vì vậy thiết lập thứ hai của bạn phát hiện chính xác lượng RAM của bạn. Vui lòng kiểm tra loại kernel nào được cài đặt trên hệ thống thứ 2 của bạn.
mbaitoff

Câu trả lời:


19

Không gian địa chỉ 32 bit có nghĩa là bạn có không gian cho 4GB địa chỉ. Lý tưởng nhất là hạt nhân thích có thể ánh xạ tất cả bộ nhớ vật lý, tất cả bộ nhớ của tác vụ hiện tại và tất cả bộ nhớ của chính nó. Nếu chỉ bộ nhớ vật lý chiếm hết 4GB có sẵn, điều đó sẽ không hoạt động. Vì vậy, bộ nhớ vật lý được chia thành bộ nhớ thấp, được ánh xạ mọi lúc và bộ nhớ cao, phải được ánh xạ khi sử dụng. Trừ khi bạn đang chạy kernel đã vá, trên kiến ​​trúc ix86, 128 MB không gian địa chỉ được dành cho mã kernel và cấu trúc dữ liệu và 896 MB được dành cho ánh xạ bộ nhớ vật lý (tổng cộng là 1GB).

Đọc nền về sự phức tạp của quản lý bộ nhớ khi không gian địa chỉ của bạn không lớn hơn tổng bộ nhớ của bạn:

Đoạn trích từ nhật ký kernel của bạn:

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

Ở đây bạn có 887 MB bộ nhớ thấp: tối đa theo lý thuyết là 896 MB trừ đi một vài MB bộ đệm DMA (vùng bộ nhớ được sử dụng để giao tiếp với các thiết bị phần cứng).

Trong bộ nhớ vật lý của bạn, 3328MB được ánh xạ tại các địa chỉ dưới 4GB và 768MB được ánh xạ tại các địa chỉ trên 4GB (phạm vi 0x100000000 Nott0x130000000). Bạn không nhận được quyền truy cập vào 768MB này, điều này giải thích tại sao bạn chỉ có sẵn 3242 MB (4096 MB RAM trừ 768 MB không thể truy cập trừ đi 9 MB bộ đệm DMA trừ 75 MB được sử dụng bởi chính kernel và mã). Tôi không biết tại sao BIOS ánh xạ một số RAM lên trên 4GB, nhưng như một điểm dữ liệu, tôi đang đăng bài này từ một PC có 4GB RAM tương tự có RAM được ánh xạ ở 0x100000000 Chuyện0x130000000.

Ánh xạ bộ nhớ vật lý trên 4GB yêu cầu sử dụng PAE . PAE phải chịu một chi phí hiệu năng nhỏ (đặc biệt, nó yêu cầu cấu trúc dữ liệu lớn hơn trong trình quản lý bộ nhớ), do đó, nó không được kích hoạt một cách có hệ thống. Hạt nhân Ubuntu mặc định được biên dịch mà không cần hỗ trợ PAE. Lấy -generic-paekernel Cài đặt linux-image-generic-pae để có thể truy cập tới 64GB RAM.

TL, DR: Linux đang hoạt động như mong đợi. Phần sụn không hữu ích lắm. Nhận kernel kích hoạt PAE.


Chà, thật dễ dàng ... Cảm ơn Gilles :) ... hiểu nhật ký chắc chắn là khó hơn! ... Tôi đã cài đặt linux-image-2.6.32-32-generic-pae, và htopbây giờ báo cáo3990 MiB
Peter.O

1
Máy ánh xạ ram trên mốc 4gb để có thể đặt bộ nhớ phần cứng như ram video của bạn dưới nhãn 4gb để chúng có thể được sử dụng bởi các nhân 32 bit không kích hoạt.
psusi

Tôi cho rằng tất cả GB của bạn nên là GiB?
weynhamz

@TechliveZheng Đây là trang web công nghệ máy tính, không phải trang web vật lý. Tất cả MB, GB, v.v. của tôi thực sự là MiB, GiB, v.v.
Gilles 'SO- ngừng trở thành ác quỷ'

1

Có thể đó là do kiến ​​trúc của Ubuntu của bạn là i386 (phiên bản 32 bit). Kết quả khi bạn chạy là uname -agì?


uname -a... Linux DT9400 2.6.32-32-chung # 62-Ubuntu SMP Thứ tư ngày 20 tháng 4 21:54:21 UTC 2011 i686 GNU / Linux ... Tuy nhiên, khi tôi gặp trong "Thông tin cập nhật:" trong nhiệm vụ của tôi, Một cài đặt khởi động kép 10.04 32 bit khác cho thấy 3.9 Gib .. Cả hai hệ thống khởi động kép này đều được cài đặt từ cùng một đĩa CD, nhưng hiện đang chạy các kernel khác nhau và có các chương trình khác nhau được cài đặt ... BTW, đây không phải là một sự cố gần đây, Nó đã được hiển thị 3,2 GiB trong nhiều tháng ..
Peter.O

Rõ ràng bạn đang chạy kernel 32 bit ('i686'). Nhân tiện, 3.9Gb đã có nghĩa là 4Gb, vì một số không gian địa chỉ được dành cho phần cứng.
mbaitoff

Vâng, cảm ơn mbaitoff, tôi sẽ mong đợi một chút bộ nhớ để đi bộ, nhưng tôi nghĩ rằng 0,8 GiB là quá nhiều, vì vậy tôi muốn tìm hiểu những gì đang xảy ra ở đây.
Peter.O

AFAIK Ubuntu có thể cài đặt kernel PAE có thể sử dụng lượng lớn RAM ngay cả trên x86
Anton Barkovsky

3
Tôi nghĩ rằng bạn chỉ cần cài đặt kernel pae (linux-generic-pae và linux-headers-generic-pae) và, nếu bạn muốn, hãy loại bỏ kernel chung.
Anton Barkovsky
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.