CentOS 6.3 X86_64 RAM detection

centosmemory

I have a machine with 8GB ram (BIOS sees it, so my motherboard and CPU supports it), and I installed CentOS 6.3 on it.
When it starts up, it only see 3.1GB.

uname says: 2.6.32-279.1.1.el6.x86_64 #1 SMP


BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cf65f000 (usable)
BIOS-e820: 00000000cf65f000 - 00000000cf6e8000 (ACPI NVS)
BIOS-e820: 00000000cf6e8000 - 00000000cf6ec000 (usable)
BIOS-e820: 00000000cf6ec000 - 00000000cf6ff000 (ACPI data)
BIOS-e820: 00000000cf6ff000 - 00000000cf700000 (usable)

dmesg | grep -i memory says:

initial memory mapped : 0 - 20000000
init_memory_mapping: 0000000000000000-00000000cf700000
Reserving 129MB of memory at 48MB for crashkernel (System RAM: 3319MB)
PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000
PM: Registered nosave memory: 00000000000e0000 - 0000000000100000
PM: Registered nosave memory: 00000000cf65f000 - 00000000cf6e8000
PM: Registered nosave memory: 00000000cf6ec000 - 00000000cf6ff000
Memory: 3184828k/3398656k available (5152k kernel code, 1016k absent, 212812k reserved, 7166k data, 1260k init)
please try 'cgroup_disable=memory' option if you don't want memory cgroups
Initializing cgroup subsys memory
Freeing initrd memory: 16136k freed
Non-volatile memory driver v1.3
agpgart-intel 0000:00:00.0: detected 8192K stolen memory
crash memory driver: version 1.1
Freeing unused kernel memory: 1260k freed
Freeing unused kernel memory: 972k freed
Freeing unused kernel memory: 1732k freed

Update:
Memtest see all the 8GB, and dmidecode -t 17 | grep Size too.
But free -m still see only 3.1 GB.

Question: How can I repair/modify the system, to see all the 8GB RAM?

Thanks in advance!

Best Answer

It looks like you are running a 64 bit kernel. You should not need to install a PAE kernel.

I originally had an answer here explaining how to install the PAE kernel because at first I somehow missed the fact that you have a 64 bit kernel.

My (very limited) interpretation of your BIOS-provided physical RAM map is that your BIOS is only telling your OS about 3480223744 adressable bits, or about 3.2GB. If you subtract the reserved bits, we are left with 3.1GB.

Some people have reported reading the following in their dmesg output:
WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 13040MB of RAM
Could you run dmesg | grep -i memory and look for a similar warning message?

Related Topic