您好!一台配备 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
(注意:后者显示所有范围,即使它们实际上不使用任何物理内存)。