试图在带有 PAE 的 32 位 CPU 上获得超过 4GB 的 RAM,但不能。
~# grep -o pae /proc/cpuinfo
pae
pae
pae
pae
~# uname -a
Linux debian 4.9.0-6-686-pae #1 SMP Debian 4.9.82-1+deb9u3 (2018-03-02) i686 GNU/Linux
~# grep HIGHMEM /boot/config-4.9.0-6-686-pae
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_HIGHMEM=y
# CONFIG_DEBUG_HIGHMEM is not set
~# dmidecode -t memory | grep Enabled
Enabled Error Correcting Capabilities:
Enabled Size: 1024 MB (Single-bank Connection)
Enabled Size: 1024 MB (Single-bank Connection)
Enabled Size: 1024 MB (Single-bank Connection)
Enabled Size: 1024 MB (Single-bank Connection)
Enabled Size: 1024 MB (Single-bank Connection)
Enabled Size: 1024 MB (Single-bank Connection)
还有
~# free -h
total used free shared buff/cache available
Mem: 3.8G 29M 3.6G 10M 244M 3.5G
Swap: 9G 0B 9G
也许有人可以帮忙,我该看哪里?
答案1
要诊断内存问题,最好从内核启动消息开始;内核打印出它发现的有关系统内存的所有内容。从 的输出开始dmesg
,寻找“内存”。
正如您发现的那样,在您的情况下这表明
[ 0.000000] WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 2176MB of RAM.
[ 0.000000] WARNING: CPU: 0 PID: 0 at /build/linux-rtbsTs/linux-4.9.82/arch/x86/kernel/cpu/mtrr/cleanup.c:978 mtrr_trim_uncached_memory+0x2f5/0x326
这表明 BIOS 没有为 6GiB 系统正确设置。