Why does Ubuntu only show 3GB of RAM?

I have an Asus G50vt-x5 laptop with 4GB of RAM installed. But Ubuntu 10.10 shows only 3GB of RAM. Why is it only showing 3GB of RAM instead of the full 4GB? output of free command is :

neal@ubuntu:~$ free
             total       used       free     shared    buffers     cached
Mem:       3095668    2972784     122884          0     747996    1590044
-/+ buffers/cache:     634744    2460924
Swap:            0          0          0

You can install 64bit version, but if you don't want to do this, you can install PAE (Physical Address Extension) enabled kernel on the 32-bit version.

After 10.04, Ubuntu automatically installs the PAE enabled kernel if it detects more than 3 Gb of memory. But ubuntu wiki says:

In the case of the liveCD, a working network connection is required, since the PAE enabled kernel packages are not present on the CD.

So I guess you installed Ubuntu using CD without an internet connection.

Try this:

sudo apt-get install linux-generic-pae linux-headers-generic-pae


What is PAE?

Physical Address Extension is a technology which allows 32 bit operating systems to use up to 64 Gb of memory (RAM), something which is normally achieved by switching to a 64 bit system. PAE is supported on the majority of computers today and it is an easy procedure to enable it in Ubuntu, if it is not already. To check if your processor supports PAE, try

grep --color=always -i PAE /proc/cpuinfo

In general, a proper 64 bit system is recommended if you have 4 Gb or more memory and/or want to get the full benefit of the 64 bit architecture (see 32bit_and_64bit), but in some cases making a complete switch to 64 bit is not desirable, and using PAE can be a viable compromise.

It should be noted that there is no Virtual Address Extension. i.e. The applications still get the same amount of virtual memory since the Virtual addresses are still 32 bits while the Physical Addresses are of 36 bits. Therefore PAE is not at all equivalent to a 64 bit system.


If you installed the 32-bit version of Ubuntu, it won't recognize over 4GB of memory. You will need to install the 64-bit version of Ubuntu for the system to recognize more than 4GB of memory.

See also:

  • http://en.wikipedia.org/wiki/3_GB_barrier

Note that the standard now is for the Ubuntu images to build and ship with the PAE enabled kernel which allows the use of more than 4GB RAM on 32-bit systems. However, this requires the use of a PAE-capable processor in your system. If your system is sufficiently old, the PAE kernels will not work, and the above restriction of a 4GB memory limit will still stand.


Open /var/log/dmesg/dmesg and look for the section near the beginning that looks like this:

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009d800 (usable)
[    0.000000]  BIOS-e820: 000000000009d800 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)

Post that section for detailed analysis. Also look for another line a little further down like this:

[    0.000000] Memory: 4019820k/4972544k available (5694k kernel code, 798616k absent, 154108k reserved, 2514k data, 944k init)

Often times there are things like video memory taking up space in the 3-4 gb area. On some systems that memory is simply lost. On others, it can be remapped, often above the 4gb mark, which you need either the pae or 64bit kernel to access.


You have three solutions, two of which have already been suggested:

  • install a 64-bit kernel on your i386 installation; on Debian it's only a matter of installing kernel-image-2.6-amd64-k8 and amd64-libs
  • install a 32-bit kernel with PAE activated
  • reinstall a complete 64-bit system