I recently upgraded an old CentOS 7 server at AWS to a Rocky 9 server.
The old t2.micro (x86 architecture) server reported a single 1G node under Early memory node ranges. About 92MB of RAM was held in reserve.
The new t4g.micro (AMD Nitro architecture) shows 192MB reserved. Additionally, instead of dmesg only showing a single range in the Early memory node ranges, there are now seven. Thus only the first range shows as available RAM, and everything else appears to be reserved.
[ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000040000000-0x0000000075c2ffff] [ 0.000000] node 0: [mem 0x0000000075c30000-0x0000000075c3ffff] [ 0.000000] node 0: [mem 0x0000000075c40000-0x0000000075ceffff] [ 0.000000] node 0: [mem 0x0000000075cf0000-0x0000000075d2ffff] [ 0.000000] node 0: [mem 0x0000000075d30000-0x00000000791fffff] [ 0.000000] node 0: [mem 0x0000000079200000-0x00000000795dffff] [ 0.000000] node 0: [mem 0x00000000795e0000-0x000000007d5fffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000040000000-0x000000007d5fffff] In /proc/iomem, I see
40000000-75c2ffff : System RAM 75c30000-75c3ffff : reserved 75c40000-75ceffff : System RAM 75cf0000-75d2ffff : reserved 75d30000-791fffff : System RAM 79200000-795dffff : reserved 795e0000-7d5fffff : System RAM The first range is 860MB, which is approximately what /proc/meminfo shows (MemTotal: 868744 kB). The amount of each range is:
40000000-75c2ffff : System RAM 860MB 75c30000-75c3ffff : reserved 64KB 75c40000-75ceffff : System RAM 703KB 75cf0000-75d2ffff : reserved 256KB 75d30000-791fffff : System RAM 52MB 79200000-795dffff : reserved 4MB 795e0000-7d5fffff : System RAM 64MB I'd really like to reclaim that 118MB (52+64 for the 5th and 7th range) that it's calling "System RAM" but not making available.
Does anyone know how the kernel decides to create those early ranges, and if there is any way to make adjustments?