Mik*_*e B 9 linux memory centos pae dmidecode
我有一台在 VMWare 上运行的 CentOS 5.10(32 位)服务器。它分配了 4 GB 的 RAM。
如果我运行,dmidecode -t 17 | grep Size | grep MB我会看到:
Size: 4096 MB
Run Code Online (Sandbox Code Playgroud)
然而,当我运行时free,我看到:
total used free shared buffers cached
Mem: 3107140 1239244 1867896 0 332 400464
-/+ buffers/cache: 838448 2268692
Swap: 2096472 0 2096472
Run Code Online (Sandbox Code Playgroud)
为什么内存free报告总量和dmidecode输出之间存在差异?
我正在运行的内核是:
2.6.18-371.4.1.el5 #1 SMP Thu Jan 30 06:09:24 EST 2014 i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
诚然,内核没有运行,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
Run Code Online (Sandbox Code Playgroud)
Mic*_*ton 18
对于 32 位内核,您只有 4GB 的可用地址空间。其中一些地址空间必须由系统中的(虚拟或物理)硬件(例如视频卡、NIC 等)用于自己的目的。这种用法通常在 256MB-1GB 之间,具体取决于特定硬件需要多少地址空间。
由于该地址空间由硬件使用,因此 32 位系统通常无法访问相应的 RAM。
你有几个选择:
该free命令的输出不计算保留的内核内存和其他一些小位。即使在 64 位内核中,即使内存小于 2GB,您也会看到这种差异。