Link to home
Start Free TrialLog in
Avatar of neil4933
neil4933

asked on

Using /3GB or PAE with 32bit applications

Hi Everyone

We have an application running on a Windows 2003 Server Enterprise 32bit. The application itself is 32bit too. The server is running on VM and has 4GB RAM allocated to it.

The application seems to be eating more and more memory! Whilst we are looking into what is causing this (memory leak, patch etc), our server guys have advised thay they can allocate more RAM to the server. BUT - they will need to use the PAE switch or 3GB switch in order for the OS and application to 'see' this extra memory.

Not being a server admin, I was hoping a memory expert could help me out here.

Firstly, does the /3GB switch actually allow for the OS/app to see more memory? I thought it only changed the allocation of virtual address memory from 2GB:2GB to 3GB:1GB app: kernal ratio?

Secondly, I guess we can use PAE, but will this help if the app is not 'PAE' aware?

Thirdly, are there any disadvantages to using PAE, or is this recommended to 'trick' the OS into seeing more than 4GB RAM?

Finally, given that the server is a VM, are there are any disadvantages from a VM perspective (assuming we have enough RAM on the host).

Many thanks in advance!
Avatar of TechnicallyMaybe
TechnicallyMaybe
Flag of United States of America image

Using /3GB allocates 3GB of the virtual memory space to applications instead of the default 2.  This helps performance in systems with 4GB or more RAM.  Not going to be as fast as a 64-bit OS, but you shouldn't have any problems using /pae and /3gb
ASKER CERTIFIED SOLUTION
Avatar of Rant32
Rant32

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
Avatar of Rant32
Rant32

/PAE will make all physical RAM available to the OS, but it doesn't increase the maximum memory available for each 32-bit process (that is still limited to 2 GB, unless the app is AWE capable). As I said, I don't recommend adding /3GB on a production machine just to have 3GB of application memory.

If your server is running multiple instances/services/processes that use 2 GB of memory, then adding RAM and using /PAE will help, because each process can use 2GB. If the application at hand is a single process, then adding more than 4 GB of memory will not help you very much on a 32-bit platform (depending on memory requirements of other processes).
Avatar of neil4933

ASKER

Thanks guys.

One further question - looks like PAE could be beneficial whereas /3GB could hurt us. As regards PAE, does the application need to be "PAE aware" in order to see this extra memory?

Also, from a memory point of view, how does this fit into the idea of each process having a 4GB virtual memory address space (with 2GB reserved for the app, and 2GB reserved for the OS). Does PAE actually increase this 4GB virtual address memory space? Or does it keep it at 4GB, but just allow more of them that can be translated to physical memory?
No, the app does not have to be PAE aware.

PAE does not increase the virtual memory space. It simply is just able to store more info in physical memory instead of paging it off.

You'll still want to maintain a pagefile.
The /3GB is all about virtual address space and has very little to do with how much RAM the system has or how it is used. Before even contemplating this setting be sure the application is Large Address Space Aware. If it isn't the setting will be of no benefit whatsoever, while the constrained system address space may have serious implications.

If the application is aware it MAY benefit from the setting.

PAE simply allows a 32 bit system to access more than 4GB RAM. This setting has no implications for applications. There may be a small performance loss due to the extra level of address translation - 3 levels with PAE, 2 without. A 64 bit OS will always have a 4 level translation, even with less than 4GB RAM.
Thanks both..

So basically, PAE is a Win/Win situation, we don't need to check whether the app is PAE 'aware', using the switch is the best way to let a 32bit system see more than 4GB RAM (providing the OS supports it, e.g. 2003 Server Enterprise)?
You are correct.  Also, 2003 standard supports 16GB memory.
PAE is the ONLY way a 32 bit OS can use more than 4GB of RAM.