Link to home
Start Free TrialLog in
Avatar of ScribbleMeat
ScribbleMeat

asked on

XP Pro and 4GB of RAM -- XP sees 2GB

I am just now building my new computer with literally all the latest parts. The BIOS recognizes 3.8GB, but XP Pro reports 2GB. Is ther a way to force XP Pro to use all the available memory? Or am I going to have to switch to 64-bit XP?
Avatar of zombie
zombie

If your bios read 2 GB too i will say the fault of your mother board
Yes u should switch to  64 bit
Check this :http://www.microsoft.com/windowsxp/64bit/evaluation/top5.mspx
Avatar of SheharyaarSaahil
that's the common issue, read this article >> http://www.brianmadden.com/content/content.asp?ID=69
and try to search on google, you will get lots of cases and information on this issue :)
1) Windows XP (32-bit) can use ONLY 2GB of RAM by default.  If you have 4GB, Windows hoards the other 2GB for its own use.

2) You can shift the balance to your favor by adding the /3GB switch to the boot.ini file:

http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx

This is give your applications access to 3GB of physical RAM (but still limit them to 2GB virtual space) and have Windows work in 1GB.

3) You can move to Windows XP Pro x64 edition IF you have an x64 CPU (AMD Athlon 64 or Intel 64-bit CPU) and you can locate 64-bit device drivers for all your hardware (easier said then done!).  The x64 version of Windows is NOT limited to 4GB of RAM or 2GB of virtual space.
"... Windows XP (32-bit) can use ONLY 2GB of RAM by default ..." ==> NO !!  Windows addresses 4GB of memory.   The upper end of the address space is used for a variety of reserved items -- BIOS shadowing, AGP aperture, I/O addresses, video shadowing, etc. -- and for these reasons systems with 4GB of installed memory never report a full 4GB of available memory.   Typically you'll "see" somewhere between 2.75gb and 3.5gb in systems that actually have 4GB installed.  (2GB is too low here, so there's probably some other issue involved)

"... adding the /3GB switch ... give your applications access to 3GB of physical RAM ...but still limit them to 2GB virtual space ..." ==> NO NO NO !!!!   The default limitation is a 2GB virtual space for applications; the /3GB changes this to 3GB of virtual space => whether or not there is that much physical memory.   If does, of course, mean a single application could use 3GB of physical memory if it was available and could be fully assigned.   Further, only applications that are "large address aware" can take advantage of the additional address space.

You don't have the problem here, but since the 4GB limitation has been discussed, you can override it with the /PAE switch, which forces the use of 36-bit memory addressing.   I don't recommend this, however, as it adds a layer of address translation that you simply don't need, and this is NOT your issue here.

Is your system reporting exactly 2GB?   ... or 2.xx GB?   If the latter, I'd say all is well, and it's simply reflecting the available space after the reserved addresses.   If it's showing exactly 2GB, then there are other possibilities -- in this case, post the details of your system (motherboard, video cards, CPU, etc.).
Avatar of ScribbleMeat

ASKER

Wow! That is a lot of conflicting information! Okay, here is the whole skinny on the system -- first the hardware specs...


Hardware
================================
CPU: AMD Athlon 64 X2 4800+
Motherboard: ASUS A8LN32-SLI Deluxe
RAM: 4GB Corsair DDR PC 3200
Video Cards: Two XFX Geforce 7800 GTX (256MB) in SLI Configuration
Sound Card: SoundBlaser X-Fi Elite Pro

BIOS Info
=====================
I have activated the memory hole in the BIOS as per ASUS' instructions. I made no other changes.

Before activating the memory hole, the BIOS and OS reported as follows:

System Memory:
=====================
Installed Size: 4096 MB
Usable Size: 2288 MB

Windows Reported 2.23 GB
=====================

Now it reads like this:

System Memory:
=====================
Installed Size: 1808 MB
Usable Size: 3850 MB

And Windows XP Pro reports exactly 2.00 GB available.
=====================
Also, I have a subscription to MSDN, so I can install any microsoft OS I want (including Vista).
The 2.23GB is lower than I've generally seen -- but with two video cards, a high-end sound card, etc. you've got a lot of addresses that have to be mapped in the upper end of the address space:  BIOS shadowing, video BIOS shadowing for two different cards, AGP apertures, video addressing for two cards, PCI mappings for the sound card, etc. => so I suspect that was correct.  The total size of the memory "hole" (the area used for all these mappings) is the total amount of PCI/AGP address space consumed for all devices as configured by the BIOS, and so is dependent upon items such as the amount of video memory, size of the AGP aperture, and the number of PCI devices.   Your very well endowed system apparently needs a lot of this space -- thus the 2.23GB you "see" in normal mode.

You haven't actually activated a "memory hole" ==> you've activated what is more correctly called "memory hole remapping".   This is supposed to allow remapping of the memory that's "lost" due to the PCI/AGP address space consumption.   It requires at least an E-step processor (I believe all dual-core Athlons are) and BIOS support (which you have).  I'm not sure here, and don't have a similar system to check this on, but I believe what's happening is the additional memory is being mapped above the 4GB address space limitation when you enable the memory hole remapping.   If this is the case, you should "see" the memory if you enable physical address extension -- the /PAE switch in the BOOT.INI file.
In this scenario, what would I gain memory-wise if I switch to x64? Also, I am confused on one thing.

If I install only 2 GB of memory, AGP apertures BIOS Shadowing etc. use none of my RAM addressing. So why should it get to use half of 4GB?

This seems like a problem that should not exist at this stage of technology. After all, one of the big benefits of 64-bit computing is huge amounts of RAM addressing. If top-of-the-line motherboards cannot even properly handle 4GB of memory, how can we expect to be able to handle 128GB? I am not just frustrated, I am annoyed by this whole thing. I spent $6,000 and countless hours building this computer -- and the whole point was to be able to do HD video editing (RAM Intensive) and 3D design (VGA/RAM intensive). Now it seems that $280 worth of memory would have been better spent on Red Bull and vodka.
AGP apertures, BIOS shadowing, etc. are ALWAYS using some of your 4GB address space (that's all you can address with 32 bits).   But they always use the upper end of that address space -- so if you don't have more than 2GB of memory you never encounter any conflicts.   So that's why you see ALL of your memory if you only install 2GB.   But when you install enough memory that the memory tries to occupy the same addresses as the AGP/PCI/BIOS addresses, the memory can't use those addresses (since two things can't occupy the same space at the same time).

If you switch to x64, your address space will be enhanced -- so you'll see all of the memory; but your application compatibility will be degraded, since many applications don't work well (yet) with x64.   Personally, I'd stay with 32-bit Windows (e.g. XP) for now.   I'd try the /PAE switch and see if that helps.  If not, I'd simply install only 2GB of memory.   The reality is you'll notice VERY LITTLE if any performance improvement beyond 2GB of memory -- and the additional addressing overhead with the /PAE switch may very well overshadow the benefit of the additional memory.

>>degraded, since many applications don't work well (yet) with x64.

Having been using x64 on an AMD Athlon 64 3000+ based system for several months, I can tell you with certainty that this statement is FALSE.  All applications (except for 16-bit ones which don't work at all) work perfectly well on x64 and from my tests, work even better than they do on the SAME HARDWARE when booted to the 32-bit version of XP.

Windows XP x64 Edition is 100% compatible with 32-bit APPLICATION software.  What is _not_ compatible is any 32-bit DEVICE DRIVER or application that needs that device driver.  x64 requires x64 drivers!
It was perhaps an overstatement to say "don't work well" => what I meant was they do not utilize the 64-bit calls, so there is some performance hit associated with that.   I agree it's not a major penalty, and indeed most folks won't even notice it.   But there is a small penalty -- according to this recent review it's on the order or 1 or 2 percent:

"4) Does WoW64 (Windows-On-Windows 64) decrease performance?
WoW64 does not have the performance penalties that full-scale 32-bit emulation incurs. But, as the CPU is translating 32-bit calls into 64-bit calls, there is always a bit of performance overhead, which takes away speed from the application. While we have not run any full-scale performance benchmarks on the operating system yet, from our early time with the OS it does not appear that WoW64 will take a noticeable performance hit for running 32-bit applications under Windows XP 64-bit Edition. If we were to estimate numbers, we would likely say under the 1-2% percentage point for performance loss in comparison to a 32-bit operating system."
As far as I'm aware, it's a known issue with the A(n motherboard family.

You might want to check their website for information.
(Previous post I meant "A8N motherboard family". Sorry for the typo.)
If everyone is going to have a different opinion, how can I know what is right?
One of the problems with a forum like this exactly that -- you need to make your own assessment of the credibility of the responses.   In your case, you have another alternative that many don't:  since you have an MSDN subscription you can simply install x64 and/or Vista and see if you like the performance.

However, if you do a bit of your own research you'll find that:

(a)  XP systems with 4GB of memory "see" anywhere from the low 2+ GB (like you're seeing with 2.23) up to about 3.5GB -- for the reasons I noted earlier;

(b)  XP restricts the memory allocated to individual processes to 2GB, but uses any memory above for system processes that would have occupied lower memory if the system had 2GB or less of memory;  the /3GB switch will alter that balance -- but has NOTHING to do with "seeing" more memory in systems with 4GB of memory;

(c)  the /PAE switch, on systems that have chipset, CPU, and OS support for it, will allow you to use all of 4GB (or even more if the motherboard supports it) by remapping the additional memory above the 4GB barrier imposed by 32-bit addressing (it does this by adding 4-bits to the address registers and dynamically managing the mappings);

(d)  64-bit Windows will run 32-bit applications, but uses a WOW-64 subsystem to manage these; and although this is a very efficient set of code, it DOES cause a small penalty in performance -- this will, of course, disappear as application upgrades incorporate 64-bit support;

As I noted in an earlier post, your best approach - if you want to continue using XP - is to try the /PAE switch to see if your motherboard/chipset/CPU works with this (I do not know if there's an issue with your particular motherboard's support of this).   It's very simple to try:  simply add "/PAE" to the end of the OS load line in your BOOT.INI.    Just right-click on My Computer; select Properties; click the Advanced tab; click on Settings under Startup and Recovery; click the Edit button where it says "To edit the startup options file manually, click Edit";  and add /PAE at the end of the line that loads XP  (if that's your ownly boot option it's probably the only line after "[operating systems]").

If /PAE does not let you "see" the additional memory, you have a support issue with your system and your best bet is to turn off the memory hole remapping and either just use 2GB, or leave all 4GB installed and accept that you'll only have 2.23GB available for XP.   Do NOT leave 3GB installed -- that would be okay if you used 2 512mb modules for the last GB, but not with a single module.   That would force the memory subsystem to run in single channel mode and you'd reduce the memory performance for all of your memory.
I have tried the /PAE switch as best I know how, but it makes no difference. Wven without the /PAE switch system properties says:


Computer:
   AMD Athlon(tm) 64 X2 Dual
   Core Processor 4800+
   2.41 GHz, 2.00 GB of RAM [No matter what I do, it always says 2.00 GB]
   Physical Address Extension [This is here whether I have added /PAE or not]

Here is how I am editing the Boot.ini file:

===========================

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Media Center Edition" /noexecute=optin /fastdetect /usepmtimer /PAE

[NOTE: The "/PAE" is mine. The last line might be wrapping in your browser, but is one line in Boot.ini.]
==============================

One last note, I tried the /3GB switch and all that it did was turn off SLI. I got a message saying that SLI is no longer available when I booted. The 2.00 GB of RAM did not change with the /3GB switch.

Hmmm... according to Microsoft, /PAE is an Intel technology -- I have AMD...

http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx

=========================

Quote: PAE is an Intel-provided memory address extension that enables support of up to 64 GB of physical memory for applications running on most 32-bit (IA-32) Intel Pentium Pro and later platforms. Support for PAE is provided under Windows 2000 and 32-bit versions of Windows XP and Windows Server 2003. 64-bit versions of Windows do not support PAE.

PAE allows the most recent IA-32 processors to expand the number of bits that can be used to address physical memory from 32 bits to 36 bits through support in the host operating system for applications using the Address Windowing Extensions (AWE) application programming interface (API). For information about the AWE API, see the Base Services section of the Platform SDK.

=========================
... as I noted, the /3GB switch "... has NOTHING to do with "seeing" more memory "

Since /PAE isn't providing the remapping, then your system isn't supporting it => as you've correctly surmised, I'm sure that means AMD doesn't support it -- this is obvously an area where the compatibility of the CPU's is less than 100%.

I'll echo my last comment:  "... your best bet is to turn off the memory hole remapping and either just use 2GB, or leave all 4GB installed and accept that you'll only have 2.23GB available for XP..."   Personally, I'd just use 2GB and use the other memory in another system (or return it if that's an option).

Take from the ASUS Forum on http://vip.asus.com/forum/bbs_view.aspx?board_id=1&model_name=A8N32-SLI+Deluxe&message_id=20060212101209977&filter=3&page_size=100&elite=0&SLanguage=en-us&topic_page=1&page_cnt=4&recc=372


Asus FAQ answer :
..."



 

 

 If you installed total 4GB memory, the system will detect less than 4GB of total memory because of address space allocation for other critical functions, such as:

- System BIOS (including motherboard, add-on cards, etc..)
- Motherboards resources
- Memory mapped I/O
- configuration for AGP/PCI-Ex/PCI
- Other memory allocations for PCI devices
 
Different onboard devices and different add-on cards (devices) will result of different total memory size.
e.g. more PCI cards installed will require more memory resources, resulting of less memory free for other uses.
 
On a SLI system, since PCI-Ex graphic cards will occupy around 256MB, another 256MB will be occupied after you install a 2nd PCI-Ex graphic card. Hence, 2.75GB memory left only if two SLI cards installed on A8N-SLI Premium while 3.0GB memory left with one graphic card without other add-on devices.
 



This limitation applies to most chipsets & Windows XP 32-bit version operating system.
 
If you install Windows XP 32-bit version operating system, we recommend that you install less than 3GB of total memory. "


So, Like I said earlier on, it's a knowjn issue with the A8N family.

PS: cool system you've got there! I'm green with envy! :-D
I wouldn't call that a "known issue with the A8N family" ==> it's a known issue with ANY system (as I detailed above).   The exact amount of memory actually available varies based on the number of PCI/AGP/PCI-x devices, but it's never a full 4GB.   On systems that support /PAE you can regain the memory by having it mapped above the 4GB address space -- but in this case that's not possible.



Okay, my next step will be to install XP x64. I will update you guys. If x64 recognizes more RAM then I will know that it isn't a bios problem. If it doesn't then I guess I am SOL. Then as a last resort, I will rmove one video card and maybe some other components and see if that frees any memory up. I'll be back ...
Removing a video card will definitely free up a bunch of memory => I thought of suggesting that as an option, but I assumed that since you bought two 7800GTX's to run in SLI mode that you wouldn't be too keen on only using one :-)
I have a similar problem but on a lower scale! My AMD Turion 64 laptop has 512 MB RAM (running Windows XP Pro SP2 32bit version) as reported by BIOS and Windows System Information utility. But System Properties window shows I have around 388MB and my Task Manager also shows around 391 MB Physical RAM.

So clearly window's is not using all the 512MB RAM. This is a Win XP SP2 problem as acknowledged my Microsoft. http://support.microsoft.com/kb/888137/en-us

This is due to the Data Execution Prevention (DEP) feature of  the AMD processor. DEP intrinsically uses Physical Address Extension (PAE) and hence the problem. That is why you see Physical Address Extension displayed in System Properties window whether you use the /PAE switch or not in your Boot.ini. Unfortunately they have not given a solution!
smartyram -- your problem has nothing to do with this one.   Your laptop simply uses shared video RAM, so the video chip is using some of your memory.   You MAY (if your BIOS allows it) be able to change the amount of memory dedicated to video, and if so will be able to free up a bit more memory for XP's use.
An update

The problem is not local to AMD!

Quote from http://support.microsoft.com/kb/875352
"Advanced Micro Devices (AMD) and Intel have defined and shipped Windows-compatible architectures that are compatible with DEP.

Beginning with Windows XP SP2, the 32-bit version of Windows uses one of the following:
•      The no-execute page-protection (NX) processor feature as defined by AMD.
•      The Execute Disable Bit (XD) feature as defined by Intel.

To use these processor features, the processor must be running in Physical Address Extension (PAE) mode. However, Windows will automatically enable PAE mode to support DEP. Users do not have to separately enable PAE by using the /PAE boot switch."

Note the last line "Windows will automatically enable PAE mode to support DEP"!!!!
garycase if what you say is correct then i am very lucky!
I will reduce the shared memory from BIOS and try tonight.

Otherwise I suggest you link my prev post with this article http://support.microsoft.com/kb/888137/en-us
Agreed this (http://support.microsoft.com/kb/888137/en-us) problem may not apply to me but I it applies to ScribbleMeat. And I deserve some points to pointing ScribbleMeat in the right direction!;)
smartyram -- FWIW your link also has nothing to do with ScribbleMeat's problem => the PAE flag has already been discussed at length in this forum; and it has no effect with his system, since AMD does not support PAE (it's an Intel technology).

ScribbleMeat's "problem" has already been solved here -- it's NOT a problem; it's just the way the addressing behaves when there are a lot of other devices using the upper ends of the address space.   He can gain memory by (1) removing one of the video cards; or (2) using Windows 64 ==> both of which he's aware of (and trying).   I'm sure when he posts again we'll know the results of these.
ScribbleMeat I have news for ya! I found the solution to your problem!

You have to disable DEP and PAE.

To disable DEP do this
Type the following in your Boot.ini

/noexecute=AlwaysOff

And make sure you dont have /PAE anywhere in your boot.ini. This way both DEP and PAE are disabled.
Let me know if this works

Read this for more info http://support.microsoft.com/kb/875352
Okay... so here's where I am so far.

I performed several experiments with a few different operating systems and settings. Rather than bore you with my “scientific” journal, I will lay out the results by configuration. But first, some notes:

1.) I started to install x64 XP, and I got so annoyed that I quit. Even with all new hardware, the 64-bit drivers were buggy and stepped all over each other. Maybe that is because most of the drivers were version one or beta. I'll try again in a few months. Same with Vista 32-bit.

2.) ASUS released a BIOS update which fixed the “Usable RAM” being higher than the “Installed RAM” -- who knew ASUS couldn't do math in the first place?

3.) Windows Server 2003 R2 (32-bit) recognizes nearly all of the available memory (3.76 GB out of 3.856 GB Usable) out of the box. (“/noexecute” is set to “optin” by default)

4.) Windows Server 2003 does not like digital monitors in digital mode while installing – This is just FYI. Use a VGA cable until you have 2003 fully installed with your graphics card drivers installed. Trust me... this way you won't nearly throw your monitor out the window. Come to think of it, this might have been the problem with XP x64 and Vista. Maybe I will revisit those installs.

5.) NoExecute sucks. But more than that, it is either handled differently in 2003 as opposed to XP, or it has nothing to do with my problem. Changing XP's NoExecute to “AlwaysOff” did make PAE go away and grays out the DEP options in “System>Performance Options”, but had no effect at all on how much installed RAM shows in System Properties. Furthermore, changing the NoExecute option in 2003 had no effect on installed memory good or bad – same as XP had no more or less RAM with different NoExecute settings.

6.) PAE does finally go away when you turn off DEP (/noexecute=AlwayOff) but turning it on separately with /PAE has no effect (at least on my AMD machine).

7.) I am curious whether Windows XP SP1 will show all of my usable memory and then if SP2 kills it – I will try that sometime soon.

8.) XP does NOT like the “Hardware Memory Hole” option in the BIOS, while 2003 loves it like chocolate. With HMH on, XP goes from showing 2.23 GB installed to 2.00 GB installed. Meanwhile, 2003 shows 3.76 GB installed with HMH enabled, but only 2.23 GB with HMH disabled.


Here are some configurations and their impact on “System Properties Installed RAM”. (Notice that Config 2 and Config 4 show the same System Memory but the memory hole is reversed in the BIOS):

CONFIGURATION 1
==========================================
Operating System:             Windows XP
NoExecute:             AlwaysOff or OptIn (No effect either way)
PAE:                   Off (Not forced on when NoExecute is set to “AlwaysOff”)
BIOS Memory Hole:             Enabled
BIOS Memory Report:            4.096 MB Installed / 3.856 MB Usable
                  ==========
System Properties Memory:      2.00 GB (Because Memory Hole Is Enabled)


CONFIGURATION 2
==========================================
Operating System:             Windows XP
NoExecute:             AlwaysOff or OptIn (No effect either way)
PAE:                   Off (Not forced on when NoExecute is set to “AlwaysOff”)
BIOS Memory Hole:             Disabled
BIOS Memory Report:            4.096 MB Installed / 2,288 MB Usable
                  ==========
System Properties Memory:      2.23 GB (Because Memory Hole Is Enabled)


CONFIGURATION 3
==========================================
Operating System:             Windows Server 2003 R2 (32-bit)
NoExecute:             AlwaysOff or OptIn (No effect either way)
PAE:                   Off (Not forced on when NoExecute is set to “AlwaysOff”)
BIOS Memory Hole:             Enabled
BIOS Memory Report:            4.096 MB Installed / 3.856 MB Usable
                  ==========
System Properties Memory:      3.76 GB (Because Memory Hole Is Enabled)


CONFIGURATION 4
==========================================
Operating System:             Windows Server 2003 R2 (32-bit)
NoExecute:             AlwaysOff or OptIn (No effect either way)
PAE:                   Off (Not forced on when NoExecute is set to “AlwaysOff”)
BIOS Memory Hole:             Disabled
BIOS Memory Report:            4.096 MB Installed / 2,288 MB Usable
                  ==========
System Properties Memory:      2.23 GB (Because Memory Hole Is Enabled)


BOTTOM LINE:

Well, we now know that it isn't a 32-bit vs. 64-bit problem since 32-bit 2003 worked like a charm. We also know that the Motherboard/BIOS is actually reporting 3.76 GB of memory to the OS (what the OS does with it is another story).

So, big picture problem = solved. XP problem = unsolved. Where is the slip 'twixed this cup and this lip?

-- ScribbleMeat
garycase you are right my laptop indeed uses shared memory for video.

This sucks! I was never told that the 128MB video RAM was actaully shared from my main memory.
I thought the advertised 128MB video RAM was dedicated.
Anyway I reduced that to 32MB in the BIOS and got 480MB for Windows now

Thanks for the help garycase!
So, is that it? Everybody stumped? Should I just start passing out points and write it off?

I have to tell you, those of you who have responded to this question are far-and-away some of the most intelligent people i have met here on EE. Despite that fact, this problem isn't solved -- at least for WinXP pro. This tells me a couple of things...

1) When Microsoft designed XP they clearly were not looking far enough ahead in the hardware market. Perhaps they figured that anybody using 4GB of RAM should pay more that retail for an operating system. But they did, however, call it "XP Pro", so perhaps in 2001 4GB of memory was a ridiculous idea.

2) This is CLEARLY a software issue. The fact that 32-bit Windows Server 2003 recognizes all but 280MB is proof that if Microsoft wanted to make XP able to recognize large memory then they could.

3) Windows XP Pro and Windows Server 2003 are similar enough to be identical twins. Looking into the system folder you will find the same versions of identical components 99% of the time. This is by necessity since 2003 must be backwards-compatible with XP Pro. This tells me that this problem is a licensing issue rather than a technological one. Sure, some people luck out and the stars line up and they get to use all of their memory. Other people, like me, have to jump through hoops to make it work. Microsoft simply won't make any effort to make it work more often.

4) Still, I harbor a dream that there is some undocumented tweak that will make it all work for me. But that dream is slowly fading away.

I will leave this question open for a little longer. It would be nice if this question resulted in a time-tested PAQ. I hope so, but I'm not counting on it anymore.

-- ScribbleMeat
ASKER CERTIFIED SOLUTION
Avatar of Gary Case
Gary Case
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
garrycase,

Agreed on both issues. I'm going to go ahead and call this one solved -- even if the real answer is that I'm S.O.L. for XP.

I guess for now I will dual boot XP Pro/2003 depending on if I really need the RAM.  I'll boot 2003 for rendering or video editing and boot XP Pro for PC Games and tooling around the net. I don't know if there is any real disadvantage to using WinServer 2003 all the time, I just assume that there would be slightly less vendor/driver support -- I could be wrong on that.

I appreciate your help and hope that I can repay the favor someday.

-- ScribbleMeat