Ubuntu – 64-bit and 32-bit 12.04 report 1GB less ram

64-bitram

UPDATED with mobo/cpu and some BIOS info

my first post/question in here.

i've been reading other related posts and can't seem to find the answer, so my apologies if this seems to be a double or triple post of the same issue.

i have 4GB of RAM; 4 identical 1GB sticks.

i am on a Dell Vostro 200 (non-slim) with a nvidia 1GB 9500GT gfx card.

i installed ubuntu 11.04 32-bit and found that my RAM was reported as 3.1GB.

after upgrading to 12.04 32-bit, it still said i had 3.1GB.

after doing a bit of reading i installed the PAE and restarted, after which 3.1GB was still being reported.

i've run my hackintosh and Win7 on this same machine in 64-bit (among other OS which all reported 4GB RAM) so i decided to do a fresh install of 12.04 64-bit to see if that helped.

now the RAM is being detected as 2.9GB.

from what i understand it is unnecessary to install PAE in 12.04 because the kernel uses it by default.

i found a similar article in here regarding the clock speeds of the memory, but all 4 of mine are 667mhz, so i believe they shouldn't be conflicting.

i've also read about memswap settings in the bios, which i haven't been able to find or at least identify.

is there any way to "help" ubuntu detect/use that last 1GB of RAM? is it worth the hunt or should i be happy with what i've got?

any help would be greatly appreciated.

cheers

INFO

BIOS revision 1.0.5

BIOS Advanced Chipset Features:

  • Video Mem Size: 1MB | 8MB
  • DVMT Mode: FIXED | DVMT
  • DVMT/FIXED Mem Size: 128MB | 256MB | MAX

output of uname -a:

Linux personguy-Vostro-200 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

output of free -m:

             total       used       free     shared    buffers     cached
Mem:          3009       2773        236          0        197       1735
-/+ buffers/cache:        840       2169
Swap:          141          0        140

relevant sections of lshw:

    description: Desktop Computer
    product: Vostro 200 ()
    vendor: Winbond Electronics
    version: OEM
    serial: 17BKC3J
    width: 64 bits
    capabilities: smbios-2.5 dmi-2.5 vsyscall32
    configuration: boot=normal chassis=desktop uuid=44454C4C-3700-1042-804B-B1C04F43334A
  *-core
       description: Motherboard
       product: 0CU409
       vendor: Winbond Electronics
       physical id: 0
       version: ���
       serial: ..CN7360478N02PU.
     *-firmware
          description: BIOS
          vendor: Winbond Electronics
          physical id: 0
          version: 1.0.5
          date: 09/14/2007
          size: 128KiB
          capacity: 1984KiB
          capabilities: isa pci pnp apm upgrade shadowing cdboot bootselect socketedrom edd int13floppy360 int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer int10video acpi usb ls120boot zipboot biosbootspecification netboot
     *-cpu
          description: CPU
          product: Intel(R) Core(TM)2 Duo CPU     E4500  @ 2.20GHz
          vendor: Intel Corp.
          physical id: 4
          bus info: cpu@0
          version: Intel(R) Core(TM)2 Duo CPU     E4500  @ 2.20GHz
          slot: Socket 775
          size: 1200MHz
          capacity: 4GHz
          width: 64 bits
          clock: 200MHz
          capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm lahf_lm cpufreq
          configuration: cores=2 enabledcores=2 threads=2
~~~~~~~~~~~~~
    *-bank:0
         description: DIMM DDR2 Synchronous 667 MHz (1.5 ns)
         product: 16HTF12864AY-667B3
         vendor: Micron Technology
         physical id: 0
         serial: E9014B5F
         slot: DIMM1
         size: 1GiB
         width: 64 bits
         clock: 667MHz (1.5ns)
    *-bank:1
         description: DIMM DDR2 Synchronous 667 MHz (1.5 ns)
         product: 16HTF12864AY-667B3
         vendor: Micron Technology
         physical id: 1
         serial: E9014B70
         slot: DIMM2
         size: 1GiB
         width: 64 bits
         clock: 667MHz (1.5ns)
    *-bank:2
         description: DIMM DDR2 Synchronous 667 MHz (1.5 ns)
         product: 16HTF12864AY-667B3
         vendor: Micron Technology
         physical id: 2
         serial: E9014B76
         slot: DIMM3
         size: 1GiB
         width: 64 bits
         clock: 667MHz (1.5ns)
    *-bank:3
         description: DIMM DDR2 Synchronous 667 MHz (1.5 ns)
         product: 16HTF12864AY-667B3
         vendor: Micron Technology
         physical id: 3
         serial: E8013762
         slot: DIMM4
         size: 1GiB
         width: 64 bits
         clock: 667MHz (1.5ns)

e820 section of dmesg:

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009e800 (usable)
[    0.000000]  BIOS-e820: 000000000009e800 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 00000000bfe90000 (usable)
[    0.000000]  BIOS-e820: 00000000bfe90000 - 00000000bfee3000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000bfee3000 - 00000000bfef0000 (ACPI data)
[    0.000000]  BIOS-e820: 00000000bfef0000 - 00000000bff00000 (reserved)
[    0.000000]  BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
[    0.000000]  BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] DMI 2.5 present.
[    0.000000] DMI: Dell Inc. Vostro 200/0CU409, BIOS 1.0.5 09/14/2007
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
[    0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)

Best Answer

It is a bug in your motherboard/bios. If you check the output of dmesg and look for the bios e820 map, you can see exactly what memory the bios is reporting your system has. Typically the memory addresses between 3.2 GB and 4.0 GB is reserved for addressing hardware, such as video memory. A proper motherboard will move that ram to higher addresses above 4.0 GB so it can still be used ( by a 64 bit or pae enabled kernel ). Some don't, leaving that chunk of ram unusable.

Related Question