我们为 HP ProLiant DL380 Gen9 计算机配备了 512 GB 的物理 RAM。计算机的 BIOS 正确显示已安装 512 GB 的物理内存。但遗憾的是,操作系统 SUSE Linux Enterprise Release 11 Service Pack 4 仅显示总内存大小为 504.7 GB,这比预期和所需的 512 GB 要小得多。我在 Gnome 系统监视器中看到总内存的数字为 504.7 GB,当我在终端会话中执行命令“free -m”时,它显示的总内存大小为 516780 兆字节,相当于 504.7 GB。这让我很恼火,因为我想将完整的 512 GB 物理 RAM 用于此服务器上运行的软件。我不想白白失去 7.3 GB 的 RAM。在互联网上搜索并没有帮助我找出为什么 Linux 只识别 504.7 GB 的总内存而不是实际安装的 512 GB。此外,我在计算机的 BIOS 中没有看到任何可以解释这种奇怪的 7.3 GB RAM 损失的内容。因此,我现在向社区的专家请教:如何配置 Linux 操作系统以识别和使用完整的 512 GB 物理内存?
答案1
管理配备 512GB RAM 的高端服务器的人关注的重点却集中在这一点上,这令人沮丧。
跑步free -g
。
如果服务器帖子512GB 表示 RAM 很健康。
Linux 内核和系统 BIOS 会保留一定量的 RAM,这是正常的。这不是错误,也不是旨在从您购买的 RAM 中骗取资金的阴谋。事实就是如此:
256GB 服务器:
# free -g
total used free shared buffers cached
Mem: 252 152 99 0 0 2
或者这个 64GB RAM 系统:
答案2
我没有使用 SUSE,但 CentOS 表现出类似(或相同)的行为。通常这是由于 BIOS 保留造成的。
考虑安装了 8 个 16GB ECC DIMM 的 CentOS 7 系统。
# dmidecode -t 17 | grep Size
Size: 16384 MB
Type Detail: Registered (Buffered)
Size: No Module Installed
Type Detail: Synchronous
Size: 16384 MB
Type Detail: Registered (Buffered)
Size: No Module Installed
Type Detail: Synchronous
Size: 16384 MB
Type Detail: Registered (Buffered)
Size: No Module Installed
Type Detail: Synchronous
Size: 16384 MB
Type Detail: Registered (Buffered)
Size: No Module Installed
Type Detail: Synchronous
Size: 16384 MB
Type Detail: Registered (Buffered)
Size: No Module Installed
Type Detail: Synchronous
Size: 16384 MB
Type Detail: Registered (Buffered)
Size: No Module Installed
Type Detail: Synchronous
Size: 16384 MB
Type Detail: Registered (Buffered)
Size: No Module Installed
Type Detail: Synchronous
Size: 16384 MB
Type Detail: Registered (Buffered)
Size: No Module Installed
Type Detail: Synchronous
应该有 128GB 的 RAM。但是,CentOS 只报告了 125GB 的系统内存。
# free -h
total used free shared buff/cache available
Mem: 125G 65G 56G 113M 4.3G 56G
Swap: 3.8G 0B 3.8G
其余部分则被内核尊重,供 BIOS/硬件使用。
# dmesg | grep e820
[ 0.000000] e820: BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x00000000000993ff] usable
[ 0.000000] BIOS-e820: [mem 0x0000000000099400-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000007de21fff] usable
[ 0.000000] BIOS-e820: [mem 0x000000007de22000-0x000000007deb0fff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000007deb1000-0x000000007dfb9fff] ACPI data
[ 0.000000] BIOS-e820: [mem 0x000000007dfba000-0x000000007e1dffff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x000000007e1e0000-0x000000007f364fff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000007f365000-0x000000007f7fffff] ACPI NVS
[ 0.000000] BIOS-e820: [mem 0x0000000080000000-0x000000008fffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed3ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000207fffffff] usable
[ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.000000] e820: last_pfn = 0x2080000 max_arch_pfn = 0x400000000
[ 0.000000] e820: update [mem 0x80000000-0xffffffff] usable ==> reserved
[ 0.000000] e820: last_pfn = 0x7de22 max_arch_pfn = 0x400000000
[ 0.000000] e820: [mem 0x90000000-0xfed1bfff] available for PCI devices
[ 0.948608] e820: reserve RAM buffer [mem 0x00099400-0x0009ffff]
[ 0.948610] e820: reserve RAM buffer [mem 0x7de22000-0x7fffffff]
Linux 和 Windows 在表示上的唯一区别在于 Windows 对正在发生的事情更清楚一些。
在 Linux 中您必须查看dmesg
。
# dmesg | grep Memory
[ 0.000000] Memory: 131808356k/136314880k available (6441k kernel code, 2132248k absent, 2374276k reserved, 4265k data, 1620k init)
答案3
POST 可能会显示已安装 512 GB,但 BIOS 可能会将几页标记为不可用,因为 RAM 存在错误。您需要咨询硬件供应商来诊断 RAM,并可能需要更换故障 RAM。
如果在 POST/BIOS 中显示 RAM 损坏,则应运行板载诊断程序。如果显示 RDIMMS 损坏,请联系 HP。