我最近在我的 Dell PowerEdge R900 家用虚拟机服务器中安装了额外的 32GB 内存。内存检查通过,我启动到 CentOS。当我打开虚拟机管理器并检查内存使用情况时,我的机器仅报告 23.59GB 可供使用。我认为这很奇怪,所以我调用 dmidecode 并且所有 48GB 已安装内存都被正确报告。
然而,当我运行 free 命令时,它再次列出总内存为 23.59GB。我在 Dell PowerEdge R900 上使用 64 位版本的 CentOS 6.5,那么这里发生了什么会阻止我使用所有 48GB 内存?
更新:以下是 dmesg 输出的相关部分:
MTRR default type: uncachable
和
MTRR variable ranges enabled:
0 base 0000000000 mask FF80000000 write-back
1 base 0100000000 mask FF00000000 write-back
2 base 0200000000 mask FE00000000 write-back
3 base 0400000000 mask FE00000000 write-back
4 base 0600000000 mask FF80000000 write-back
5 base 007FC00000 mask FFFFC00000 uncachable
6 disabled
7 disabled
x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
original variable MTRRs
reg 0, base: 0GB, range: 2GB, type WB
reg 1, base: 4GB, range: 4GB, type WB
reg 2, base: 8GB, range: 8GB, type WB
reg 3, base: 16GB, range: 8GB, type WB
reg 4, base: 24GB, range: 2GB, type WB
reg 5, base: 2044MB, range: 4MB, type UC
total RAM covered: 24572M
Found optimal setting for mtrr clean up
gran_size: 64K chunk_size: 8M num_reg: 6 lose cover RAM: 0G
New variable MTRRs
reg 0, base: 0GB, range: 2GB, type WB
reg 1, base: 2044MB, range: 4MB, type UC
reg 2, base: 4GB, range: 4GB, type WB
reg 3, base: 8GB, range: 8GB, type WB
reg 4, base: 16GB, range: 8GB, type WB
reg 5, base: 24GB, range: 2GB, type WB
e820 update range: 000000007fc00000 - 0000000100000000 (usable) ==> (reserved)
答案1
对于遇到同样问题的其他人来说,我的问题确实是由戴尔服务器对内存模块放置挑剔引起的。我最初将 4 对 4GB 模块放置在所有四个内存提升板的插槽 3 和 4 中(原来的 4 对 2GB 模块我留在内存提升板的插槽 1 和 2 中)。
然而,无论出于何种原因,戴尔服务器都无法以这种方式工作。解决这个问题的方法是将成对的 4GB 模块放置在每个转接卡的插槽 1 和 2 中,并将成对的 2GB 模块移动到插槽 3 和 4。
我希望这可以帮助遇到同样问题的其他人。不过,现在知道这不是内核配置中的错误,这个问题可能应该转移到 ServerFault。
答案2
你是绝对正确的@KG6ZVP
这似乎无法从硬件 BIOS 级别修复。您有一个简单的 centos 6.5 安装,它适用于普通硬件,例如笔记本电脑或 1、2、3 或 4 U 架构计算机。我不认为它会支持你拥有的内存量。我已经安装 Linux 很长时间了,我的直觉告诉我您已经发现了问题所在。
您需要诸如 RHEL enterprise 或任何其他带有 Enterprise 标签的 Linux 版本之类的东西,这将正确分配您安装的 RAM。