未识别的 RAM

未识别的 RAM

您好!一台配备 512GB RAM(16 个插槽 * 32GB)的服务器,操作系统是 Ubuntu 22.04。在启动过程中,dmesg 显示服务器预留了 16259356K(15GB)RAM,导致操作系统只有 498GB 可用。我无法确定 15GB 分配在哪里。您能帮我吗?

1.) Dmidecode for RAM.
root@apac2-prd241:~# dmidecode -t memory |grep Size
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB
    Size: 32 GB


2.) dmesg log.
root@apac2-prd241:~# grep Memory /var/log/dmesg
[    3.919928] kernel: Memory: 520513460K/536773076K available (16393K kernel code, 4395K rwdata, 10908K rodata, 3360K init, 18708K bss, 16259356K reserved, 0K cma-reserved)
[    8.227673] kernel: x86/mm: Memory block size: 2048MB


3.) System RAM.
root@apac2-prd241:~# free -g
               total        used        free      shared  buff/cache   available
Mem:             497          39         439          17          18         438
Swap:              0           0           0

答案1

每个 4K 内存页需要 64B 的struct page开销,这意味着 512 GB 的 RAM 中会有 8 GB 的不可用内存。由于crashkernel、内存映射设备(即图形适配器)等原因添加一些保留内存会导致服务器上有大约 15 GB 的内存不可用。

编辑:您已分配 6 GB crashkernel(这确实不是通过 显示为可见的操作系统分配内存free),因此操作系统为自己保留了 8+6=14 GB。dmesg | grep -i reserved显示硬件保留范围,您可以将其与的输出进行比较cat /proc/iomap(注意:后者显示所有范围,即使它们实际上不使用任何物理内存)。

相关内容