Using all of 4GB RAM... questions and Vista versus Linux...

D. Hugh Redelmeier hugh at mimosa.com
Tue Oct 7 04:43:28 UTC 2008


| From: Mike Chambers <mike at miketc.net>

|   I have 2Gb Ram, and running 64bit,
| and still only see 1.8Gb of memory, as it did with 32bit as well.

You probably have a shared video device buffer.

If you look at dmesg output, you can kind of puzzle out how the BIOS
maps memory.  Here's from one of my machines:

BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
 BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e7000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000003ffc0000 (usable)
 BIOS-e820: 000000003ffc0000 - 000000003ffd0000 (ACPI data)
 BIOS-e820: 000000003ffd0000 - 0000000040000000 (ACPI NVS)
 BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000ff7c0000 - 0000000100000000 (reserved)

This machine has 1GiB of RAM at 00000000-3fffffff
Certain parts of it are reserved by the BIOS.

Another good hint is /proc/mtrr:
  reg00: base=0x00000000 (   0MB), size=1024MB: write-back, count=1
  reg01: base=0xf0000000 (3840MB), size= 128MB: write-combining, count=1
  reg02: base=0xd0000000 (3328MB), size= 256MB: write-combining, count=2

reg00 is for my RAM.  The other two are for video buffers.  (A little
odd since the first video buffer is for an on-board controller that is
turned off, I think.)

lspci can be used to find the buffer addresses for video cards.

| From: Dennis Gilmore <dennis at ausil.us>

|   I have a dell latitude that while a 64 bit system has a 32 
| bit memory controller.  so it only sees 3.25gb due to the memory hole.  with 
| no way to access it .  this is a hardware limitation.  and cant be worked 
| around.

This may not be the case.  PAE has been around since the Pentium Pro.  It
allows way more than 64GiB:
  http://en.wikipedia.org/wiki/Physical_Address_Extension

The "chipset" might be a problem but I think that most that cannot
handle mapping to above 4G only allow 2G of RAM to be installed.

| the issue here is probably hardware related and likely needs to be worked 
| around in hardware.

I don't think so.  But it could be.

I have an Acer notebook that claims to support 4G but locks up (pre
BIOS boot screen) if you actually do put 4G in it.  Others experience
this too.  (There is evidence that this is a BIOS bug.)  Acer says
"not our problem".  So manufacturers do do stupid things.

|  if HP doesnt allow that  then you get what you see.  you 
| can always try a 64 bit livecd to see if things work better for you there.

Right.  Or just try a PAE kernel (as Bill Davidsen explained).

(Vista doesn't know how to use PAE.  Vista 32 SP1 adds the ability to
report more than 3.x G of RAM, but not how to use it!)

But looking at /proc/mtrr is probably faster.  Look for something
above ffffffff.

| From: Roger Heflin <rogerheflin at gmail.com>

| Some bioses will remap memory to above 4GB, but often only if a certain option
| is set, and often these options are only available on server class MB's,
| though these options may now be showing up on desktops since desktops can now
| support more memory.

In my modest experience, all modern BIOS remap.  Some (but not
consumer HP ones) have an option to turn off remapping.

The main reason you might want to suppress remapping is to work around
MTRR problems (see below).

| From: Bill Davidsen <davidsen at tmr.com>

| The reason 2.6.27 is desirable for you is that a lot of work has gone into the
| MTRR register mapping, and it *may* be able to describe your memory where the
| 2.6.26 can't. Take that for what it's worth, I would try PAE now, and wait
| until 2.6.27 is patched (unless you have a totally different hardware).

While waiting, if you have MTRR problems, you could try my userland
hack to fix them.
  ftp://ftp.cs.utoronto.ca/pub/hugh/mtrr-uncover-2008oct01.tgz

Slightly tricky, but if you are stuck, it is useful.  The main
trickiness is that it has to be run early, before X starts.  It also
may need to be run before the frame buffer console driver which is
probably best solved by not using the frame buffer console driver.

It can also be used just to show if you have a problem.

| There are really no serious benefits to 64 bit unless you need to run very
| large user mode application programs.

True.  But the meaning of "very large" has a way of creeping up.

I always use 64-bit when I can.  Not much benefit, not much cost.




More information about the fedora-list mailing list