Linux

當我肯定有 4.0 GiB 時,為什麼我的系統只顯示 3.2 GiB 的 RAM

  • February 3, 2021

我安裝了 2x2 GiB 的 RAM。

從 grub 啟動菜單執行memtest86確認了這一點。memtest86 報告沒有錯誤。

但是,我在執行的 Ubuntu 10.04 系統中檢查可用記憶體的每一種方式,它只報告大約 3.2 GiB。

  • cat /proc/meminfo== 3320132 KB
  • System Monitor== 3.2 GiB
  • htop== 3242 MB
  • free -m== 3242 MB

誰得到了我失去的記憶體?

更新資訊:我剛剛在同一硬體上啟動到另一個版本的 Ubuntu 10.04(我忘了我已經在幾個月前安裝了它,以備不時之需):)….它報告 3.9 GiB,通過System Monitor

我在http://pastebin.ubuntu.com/629246//var/log/messages上發布了我的最新資訊

32 位地址空間意味著您有 4GB 的地址空間。理想情況下,核心喜歡能夠映射所有物理記憶體、目前任務的所有記憶體以及它自己的所有記憶體。如果僅物理記憶體佔用了所有可用的 4GB,那將是行不通的。所以物理記憶體分為低位記憶體,一直映射,高位記憶體,使用時必須映射。除非您執行的是打過更新檔的核心,否則在 ix86 架構上,128MB 的地址空間專用於核心程式碼和資料結構,而 896MB 專用於映射物理記憶體(總共 1GB)。

當您的地址空間不大於您的總記憶體時,有關記憶體管理複雜性的背景閱讀:

核心日誌摘錄:

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

這裡有 887MB 的低記憶體:理論最大值 896MB 減去幾 MB 的 DMA 緩衝區(用於與硬體設備通信的記憶體區域)。

在您的物理記憶體中,3328MB 映射到 4GB 以下的地址,768MB 映射到 4GB 以上的地址(0x100000000–0x130000000 範圍)。您無法訪問這些 768MB,這就解釋了為什麼您只有 3242MB 可用(4096MB RAM 減去 768MB 不可訪問減去 9MB DMA 緩衝區減去核心本身用於程式碼和數據的 75MB)。我不知道為什麼 BIOS 將一些 RAM 映射到 4GB 標記以上,但作為一個數據點,我從具有 4GB RAM 的 PC 發布此資訊,該 PC 的 RAM 映射為 0x100000000–0x130000000。

映射 4GB 以上的物理記憶體需要使用PAE。PAE 會產生很小的性能成本(特別是,它需要記憶體管理器中更大的資料結構),因此沒有系統地啟用它。預設的 Ubuntu 核心是在不支持 PAE 的情況下編譯的。讓-generic-pae核心 安裝 linux-image-generic-pae能夠訪問高達 64GB 的 RAM。

TL、DR:Linux 正在按預期工作。韌體不是那麼有用。獲取啟用 PAE 的核心。

引用自:https://unix.stackexchange.com/questions/15256