# 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

-
Just for the curious among us, can you post the output of the free command? –  arrange Mar 27 '11 at 16:31

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.

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.

-
Or the 32-bit PAE version of kernel. –  arrange Mar 27 '11 at 16:31
yeah its true i have 32bit version. Ubuntu 11.04 is on the way ! can i upgrade to 64bit version of 11.04 so that the issue will be fiexed? –  nebula Mar 27 '11 at 16:33
@aneal: In this situation Ubuntu won't use any amount of memory over 3GB.I added the reason to my answer.So you must install 64-bit version or PAE. –  Pedram Mar 27 '11 at 16:45
@EvilPhoenix: That's not strictly true, if they boot a 64bit livecd and install ubuntu by hand (aka debootstrap/cdebootstrap) their settings/files will be intact except of course /etc. –  OneOfOne Mar 27 '11 at 21:39
The limit of the non pae 32 bit kernel is 4gb, not 3. –  psusi Mar 28 '11 at 1:07

You can install 64bit version but if you don't want do this you can use PAE (Physical Address Extension) enabled kernel in 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 had installed ubuntu using CD without 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.

-
Any performance overheads? –  Ashfame Mar 27 '11 at 17:06
but isn't 64-bit systems for AMD processors only? –  Starx Jul 24 '11 at 14:44
@Pedram thanks a lot! This should be the correct answer because it introduces another possibility of bypassing the limit without reinstalling the system. I installed those linux kernel packages and after reboot I have my 4GB of RAM available. Thanks a lot. –  Alejandro Iglesias Aug 16 '11 at 16:38
Note that these days, Ubuntu did away with the non PAE 32 bit kernel. –  psusi Feb 7 '13 at 14:45

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
-
but isn't 64-bit systems for AMD processors only? –  Starx Jul 24 '11 at 14:44
No, Intel adopted the amd64 instruction set when its Itanium series failed and it's become the de facto standard. –  Sam Hocevar Jul 24 '11 at 20:43
I got Intel core i 7 720 qm. Will it run there? –  Starx Jul 24 '11 at 21:00
Yes. See a list of compatible Intel CPUs here: en.wikipedia.org/wiki/X86-64#Intel_64_implementations –  Sam Hocevar Jul 25 '11 at 20:18

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.

-
Just wanted to comment that I have an Asus board that lost 1GB of memory, even after installing 64bit. I had to enable remapping in the bios, as alluded to in this answer. –  user1974 Apr 21 '11 at 23:33

Rum memtest ("Test memory") from the boot menu (or the installation medium) if the first screen reports less than your 4Gb, upgrade (Flash *ROM) your BIOS.

Run sudo lshw to determine the model of your motherboard, then head up to vendor's site and DL tje latest BIOS.

-