I had an old PC with Arch Linux

$ uname -a
Linux desktop 4.1.4-1-ARCH #1 SMP PREEMPT Mon Aug 3 21:53:10 UTC 2015 i686 GNU/Linux

with 2GB RAM. I've added 2x1Gb DDR2 DIMMs and now the system has DIMMs in all banks (4x1GB). The new memory is detected in the BIOS:

System Memory Available  4024 MB

And also the output of lshw shows all the slots populated with 1GB DIMM

But the Total Memory in /proc/meminfo shows only 2GB:

$ grep MemTotal /proc/meminfo 
MemTotal:        2058968 kB

I've tried to edit the kernel params in GRUB and add mem=4G, but the total memory remains 2GB.

Any ideas what else to try?

  • 1
    Check if this answer can help you. – VL-80 Aug 19 '15 at 16:51
  • What motherboard make and model? Does the BIOS detect 4GB? – David Schwartz Aug 19 '15 at 16:57
  • Yes, the BIOS detects 4GB as stated in my post. Mother Board is product: P5B-BN vendor: ASUSTeK Computer INC. physical id: 0 version: Rev 1.xx serial: MB-1234567890 slot: To Be Filled By O.E.M. – rodrunner Aug 19 '15 at 17:00

I though about installing linux-pae, but finally decided to go for an upgrade to 64 bits in Arch Linux. It's a fairly simple process and does not require reinstalling the entire system. Now the total memory is 4GB:

$ grep MemTotal /proc/meminfo 
MemTotal:        3977736 kB

First one needs to understand the concept of "physical address space".

Any hardware in a computer that "looks like memory" needs to be mapped as part of the physical address space. That includes ram but it also includes IO devices. In particular some graphics cards require large amounts of physical address space.

When the BIOS initialises the hardware it determines the physical addresses of each peice of hardware.

Since ram is not the only user of address space to use all of the ram on a system with 4GB requires the use of physical addresses with more than 32 bits.

For that to work requires support from the CPU, chipset and OS.

  • CPUs have had support for years (since the pentium pro).
  • Desktop and laptop chipsets mostly added support somewhere around the mid 2000s.
  • On Linux you need either a 64-bit kernel or a 32-bit kernel built with PAE. On windows you need either a 64-bit version of the OS, a server edition or a hacked kernel.

Exactly how much memory is usable with a 4GB address space limit depends on both what hardware you have in the machine and how the BIOS decides to map things. Some BIOSes may have a "Maximise memory below 4GB" or similar option which may increase the memory usable with an OS that is limited to 4GB of address space.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.