Linux
為什麼“free”命令和“dmidecode”顯示不同的 RAM 值?
我有一個在 VMWare 上執行的 CentOS 5.10( ***32 位)伺服器。***它分配了 4 GB 的 RAM。
如果我跑步,
dmidecode -t 17 | grep Size | grep MB
我會看到:Size: 4096 MB
然而,當我跑步時
free
,我看到:total used free shared buffers cached Mem: 3107140 1239244 1867896 0 332 400464 -/+ buffers/cache: 838448 2268692 Swap: 2096472 0 2096472
free
為什麼記憶體報告的總量和輸出之間存在差異dmidecode
?我正在執行的核心是:
2.6.18-371.4.1.el5 #1 SMP Thu Jan 30 06:09:24 EST 2014 i686 i686 i386 GNU/Linux
誠然,核心沒有執行
PAE
,但我認為只有超過4 GB 的記憶體才需要這樣做。我知道我錯過了一些簡單的東西 - 有人可以詳細說明嗎?
附加說明/觀察
看起來我的核心確實為其他東西保留了一堆記憶體。這是我看到的
/var/log/dmesg
:Linux version 2.6.18-371.4.1.el5 (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Thu Jan 30 06:09:24 EST 2014 BIOS-provided physical RAM map: BIOS-e820: 0000000000010000 - 000000000009f800 (usable) BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved) BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 00000000bfef0000 (usable) BIOS-e820: 00000000bfef0000 - 00000000bfeff000 (ACPI data) BIOS-e820: 00000000bfeff000 - 00000000bff00000 (ACPI NVS) BIOS-e820: 00000000bff00000 - 00000000c0000000 (usable) BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) BIOS-e820: 00000000fffe0000 - 0000000100000000 (reserved) BIOS-e820: 0000000100000000 - 0000000140000000 (usable) Warning only 4GB will be used. Use a PAE enabled kernel. 3200MB HIGHMEM available. 896MB LOWMEM available. found SMP MP-table at 000f6bf0 Memory for crash kernel (0x0 to 0x0) notwithin permissible range
使用 32 位核心,您只有 4GB 的可用地址空間。系統中的(虛擬或物理)硬體(例如影片卡、NIC 等)必須將其中的一些地址空間用於它們自己的目的。這種使用量通常在 256MB-1GB 之間,具體取決於特定硬體需要多少地址空間。
由於該地址空間由硬體使用,相應的 RAM 通常無法訪問 32 位系統。
你有幾個選擇:
- 首選選項是執行 64 位作業系統。這極大地擴展了地址空間,因此所有 RAM 和硬體都有足夠的空間。它還打破了應用程序的 2GB/3GB 32 位限制,同時保持了執行 32 位程序的能力。通常,任何具有 2GB 以上 RAM 的系統都應執行 64 位作業系統以避免這些問題。
- 另一種選擇是執行啟用了 PAE 的 32 位核心。這將取消隱藏 RAM,但每個程序仍將被限制為 2GB/3GB 的地址空間,具體取決於核心建構的細節。由於 64 位作業系統可以很好地執行 32 位應用程序,因此這沒有任何優勢和許多劣勢(例如缺少升級路徑)。