我有一台8GB RAM的机器(BIOS可以看到它,所以我的主板和CPU支持它),我在上面安装了CentOS 6.3。 启动时只能看到3.1GB。
uname says: 2.6.32-279.1.1.el6.x86_64 #1 SMP
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cf65f000 (usable)
BIOS-e820: 00000000cf65f000 - 00000000cf6e8000 (ACPI NVS)
BIOS-e820: 00000000cf6e8000 - 00000000cf6ec000 (usable)
BIOS-e820: 00000000cf6ec000 - 00000000cf6ff000 (ACPI data)
BIOS-e820: 00000000cf6ff000 - 00000000cf700000 (usable)
dmesg | grep -i内存说:
initial memory mapped : 0 - 20000000
init_memory_mapping: 0000000000000000-00000000cf700000
Reserving 129MB of memory at 48MB for crashkernel (System RAM: 3319MB)
PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000
PM: Registered nosave memory: 00000000000e0000 - 0000000000100000
PM: Registered nosave memory: 00000000cf65f000 - 00000000cf6e8000
PM: Registered nosave memory: 00000000cf6ec000 - 00000000cf6ff000
Memory: 3184828k/3398656k available (5152k kernel code, 1016k absent, 212812k reserved, 7166k data, 1260k init)
please try 'cgroup_disable=memory' option if you don't want memory cgroups
Initializing cgroup subsys memory
Freeing initrd memory: 16136k freed
Non-volatile memory driver v1.3
agpgart-intel 0000:00:00.0: detected 8192K stolen memory
crash memory driver: version 1.1
Freeing unused kernel memory: 1260k freed
Freeing unused kernel memory: 972k freed
Freeing unused kernel memory: 1732k freed
更新:Memtest查看所有的8GB,和dmidecode -t 17 | grep Size dmidecode -t 17 | grep Size也是如此。
但是free -m仍然只能看到3.1GB。
问题:如何修复/修改系统,查看所有的8GB内存?
提前致谢!
看起来你正在运行一个64位的内核。 您不应该需要安装PAE内核。
我原本在这里解释了如何安装PAE内核,因为起初我错过了你有一个64位内核的事实。
我对你的BIOS提供的物理内存映射(非常有限)的解释是你的BIOS只告诉你的操作系统3480223744可寻址位,或者大约3.2GB。 如果你减去保留位,我们剩下3.1GB。
有些人在dmesg输出中报告了以下内容:
WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13040MB of RAM
你可以运行dmesg | grep -i memory dmesg | grep -i memory并寻找类似的警告信息?
进入BIOS设置并启用“Memory Remapping”选项。
我以为我以前的build议[已转换为评论]很清楚,但显然不是。
尝试#2:您可以使用某些CPU和某些BIOS将CPU转换为64位。 BIOS通常不会在BOOT期间报告RAM时关心(检查)CPU设置的内容,因此会显示实际存在的内容。 但操作系统是不同的。 操作系统将检查一个64位的CPU。 如果它没有看到一个(因为在BIOS中禁用64位CPU),那么你将得到一个32位(4Gb-max)的内存映射。 在这种情况下,任何超过4Gb 32位限制的物理RAM都将无法使用,因为操作系统无法解决这个问题。 (又名:找不到)
内存映射中的内存地址就像电话簿中的电话号码。 如果电话簿已满并且您的手机数量比手机数量多,那么所有这些额外的手机都不会有电话号码 – 所以即使它们工作正常,也不能拨打电话。 (这与“无法解决的问题”的意思是一样的。“不能解决的基本意思是”不能指定一个ID号码“。)
。
这是一个很长的路要走,但看看内核启动参数,可以configuration内核启动参数,告诉内核只能识别一定量的内存。
cat /proc/cmdline
查找任何与内存相关的设置。 mem=将是一个非常明确的赢家,但也有其他人。 看看https://www.kernel.org/doc/Documentation/kernel-parameters.txt
另外看看引导装载程序的configuration。 它可以指定相同的东西,但涵盖了虚拟化的可能性(就像这个系统实际上是一个dom0或其他一些技巧一样)。 在使用GRUB的RHEL上,请尝试: cat /boot/grub/grub.conf