为什么 SUSE Linux 不能识别整个物理 RAM?

为什么 SUSE Linux 不能识别整个物理 RAM?

我们为 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 对正在发生的事情更清楚一些。

Windows 10 总内存与可用内存

在 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。

相关内容