Windows 2000 Server StandardEdition /PAE Question

M

Microsoft

Hi.

I have a Windows 2000 Server Standard Edition, with 4GB of RAM installed. I
also have SQL Server 2000 Standard Edition installed on the same server.
I'd like Windows to 'see' all $GB of RAM and I've read articles on /PAE, but
unfortunately some of these articles imply that Windows 2000 Server Standard
Edition cannot use /PAE. So I have a couple of questions that I hope the
group can answer:

1) Does Windows 2000 Server Standard Edition only support 2GB of RAM out of
the box?
2) Can /PAE be enabled on 2000 Server Standard Edition to allow it to
utilize all 4GB?

Thanks in advance.

PJ.
 
J

John John

Microsoft said:
Hi.

I have a Windows 2000 Server Standard Edition, with 4GB of RAM installed. I
also have SQL Server 2000 Standard Edition installed on the same server.
I'd like Windows to 'see' all $GB of RAM and I've read articles on /PAE, but
unfortunately some of these articles imply that Windows 2000 Server Standard
Edition cannot use /PAE. So I have a couple of questions that I hope the
group can answer:

1) Does Windows 2000 Server Standard Edition only support 2GB of RAM out of
the box?

No, it supports 4GB, but the operating system cannot see or use all of
it because some of the memory address space is used by hardware devices.
2) Can /PAE be enabled on 2000 Server Standard Edition to allow it to
utilize all 4GB?

No.

John
 
M

Microsoft

Thanks John. But aside from the memory used by hardware devices, the OS
sees the rest, right? Do you have any idea how much a standard server uses
for standard devices?

PJ.
 
J

John John

Let's see if I can explain this in a few short paragraphs.

The processor works with data, it brings in data, processes it and
returns data. Every bit of data comes in to the processor from a memory
address and every bit leaving the processor goes to a memory address. A
32-bit processor has 4,294,967,296 memory addresses. This is the
processor's addressable memory range or the Address Space, with these
memory addresses the processor can directly access four gigabytes of
memory.

So what's the problem? The processor has enough addresses for 4GB of
RAM, why isn't it using all of it? The problem is that if the processor
gave all the addresses to the RAM it would have none left for other
things, anything and everything that needs to talk to the processor
would have to do it through the RAM or the processor would have to dump
RAM addresses to talk to other devices!

Your computer is not only made up of RAM, the processor has to work with
other hardware devices, it has to send and get data to and from some
of those other devices. Remember, the processor gets and returns data
to memory addresses, the 32-bit processor has a 4GB address range.

For example, the BIOS and system board will reserve and use a bit less
than 1 megabyte of address space directly at the processor, when the
processor needs to talk with the BIOS or motherboard it will do so
directly by using their reserved addresses, the addresses reserved by
and given to the system board cannot be used by the RAM. This
(oversimplified) example shows why a 32-bit processor cannot use all of
the RAM when 4GB is installed.

So now you may be thinking that 1 megabyte of memory addresses being
lost to the system board is a far cry from what your Windows
installation is seeing and reporting. Well, you see, most PCI devices
can communicate directly with the processor. These devices also reserve
exclusive memory addresses directly at the processor, if the processor
needs to talk to the video card it will do so at the addresses reserved
by the video card, the addresses where the video card is listening.
Your other PCI devices like sound cards, controller cards and so on also
reserve addresses directly at the processor, the processor can send and
receive data directly to and from these devices.

These devices can reserve a lot of address space, a high end sound card
can reserve 100 megabyte or more of Address Space. A video card with
512MB of on board memory has to have a way of sending the data in that
memory to the processor when needed, if all the memory addresses were
used by RAM the processor would have none left to satisfy the needs of
other devices. That is why addresses are reserved for exclusive use by
the PCI devices, the addresses that are reserved for these devices are
in turn not available for RAM addressing. The amount of memory address
space used by these devices can be as little as a few hundred megabytes
and all the way up to 1GB and more.

It is important to note that the other devices do not use RAM, they
reserve or use addresses at the processor and in turn these addresses
are not available for the RAM, the RAM is in fact deprived of the
addresses and the RAM without address space goes unused. To overcome
this address shortage problem (newer) Intel 32-bit processors make use
of Physical Address Extensions (PAE) which widens the address width to
36-bits and greatly increases the available memory address space. The
use of PAE and 36-bit addressing allows the processor to access 64GB of
RAM, the RAM that was previously unaddressed can now be addressed.

The catch is that the PCI devices keep their addresses in the lower 4GB
address range and the previously unavailable address space for the RAM
is shifted *above* the 4GB arena. The problem is that to access the RAM
above the 4GB arena the operating system has to fully support this PAE
feature, if it doesn't it cannot access the RAM in the space above the
4GB boundary. Raymond Chen has explained this very well here:
http://blogs.msdn.com/oldnewthing/archive/2006/08/14/699521.aspx

Windows 2000 Professional, Windows 2000 Server, Windows XP 32-bits and
Vista 32-bits do not make full use of this /PAE feature, they are unable
to use RAM addressed above the 4GB boundary. You need Windows 2000
Advanced Server or better to be able to fully use this /PAE feature.

To see how much memory addresses are reserved and used by hardware
devices look in the Device Manager and view "Resources by Connection".
Expand the Memory tree and you will see the memory map. On 32-bit
servers or on number crunching workstations where RAM usage is very
demanding hardware selection is important. The server should only have
necessary hardware installed in it, superfluous unused devices should be
removed from the server and the video adapter should not have oodles of
memory, most servers only display text and basic stuff, there is usually
no need to stick a 512MB video adapter in a server, nor is there usually
any need for sound cards.

John
 
M

Microsoft

Excellent reply John!

I had understood the concepts 'reserved RAM', but your reply has taken my
understanding to a whole new level. Your point about servers really only
needing minimal hardware, at least in terms of video, audio and other
'frills' is well taken. We only use commercial servers (HP's) which as you
know don't have any unnecessary stuff, so that's not an issue. Thanks
again.

PJ.
 
J

John John

You're welcome. I would like to add here that the reserved memory
address space by the devices is not necessarily reserved to talk to the
processor. Some of the devices may reserve memory addresses for their
own private use, addresses where they can execute their own commands.
They may not necessarily talk to the processor at those addresses but
the end result is the same, the private addresses will be marked as off
limits to the processor and the RAM will still end up short of addresses
in the lower 4GB memory arena. My earlier reply was missing this
important bit of information and without this information it is misleading.

John
 
M

Microsoft

John, sorry to keep this stream lingering, but I have a vendor with an
application that uses the Windows 2000 Standard Edition server in question,
specifically the SQL Server 2000 Standard Edition on that server. He is
insisting that we can and should use the /PAE switch on that configuration
and that it will improve the performance of their application by reducing
paging. His point is that applications can only use up to 2 GB or RAM on
W2K and that using the /PAE switch allows more physical RAM to be used by
the application. Some excerpyts from an e-mail exchange follow. I'd like
your comments on the accuracy and viability of his reasoning, please:

"... I quite literally make this change all day long and see the positive
effects each and every time ... per http://support.microsoft.com/kb/283037:

Typically, a process running under Windows 2000 or Windows Server 2003 can
access up to 2 GB of memory address space (assuming the /3GB switch was not
used) with some of the memory being physical memory and some being virtual
memory. The more programs (and, therefore, more processes) that run, the
more memory you commit up to the full 2 GB of address space.

When this situation occurs, the paging process increases dramatically and
performance may be negatively impacted. The Windows 2000 and Windows Server
2003 memory managers use PAE to provide more physical memory to a program.
This reduces the need to swap the memory of the page file and results in
increased performance. The program itself is not aware of the actual memory
size. All the memory management and allocation of the PAE memory is handled
by the memory manager independently of the programs that run.

..... the portion of the KB article (above) applies and should clearly
indicate why making the change works."

I would appreciate your comments. Thanks,

PJ.
 
J

John John

It appears that the application vendor is now mixing, or confusing
Physical Memory with Virtual Memory and /PAE with 4GT RAM Tuning (/3GB).

Using the /PAE switch does not provide more physical memory to the
programs, it allows operating systems capable of using the switch to use
more than 4GB of RAM. Of course, if the operating system has more RAM
available it will reduce paging, more applications will be able to
remain in the RAM, but that is not because the switch allows the
applications to use more RAM per se, it is only common sense that if the
operating system has more RAM that it will be able to reduce paging.
Windows 2000 Server does not support this switch and it cannot use more
than 4GB of RAM, using this switch does not permit applications to use
more RAM.

The /3GB switch changes the way the operating system allots "Virtual
Memory". Virtual Memory should not be confused with Physical Memory
(RAM). 32-bit operating systems have 4GB of "Virtual Address Space".
This address space is divided between the operating system and the
user-mode applications, 2GB is reserved for the kernel and 2GB is
allotted to the applications. Each application has it's own private
"Virtual Address Space", each application can have 2GB of Virtual
Address Space regardless of what others already have. Technically the
combined Virtual Address Space can be as large as the disk, it is only
limited by the size of the page file. You could start ten very large
applications and each could request the full 2GB of private Virtual
Address Space available, to satisfy all the requests for private space
for the applications the system would simply use a 20GB pagefile, of
course this isn't exactly an optimal scenario but it demonstrate how
applications can all obtain 2GB of private virtual address space.

With the use of the /3GB switch the virtual memory available remains at
4GB but the the system changes the way it allots the Virtual Memory, it
allots 3GB to the applications and limits the kernel space to 1GB. Care
has to be used when using this switch, the system should be closely
monitored, the operating system could be starved of memory or the
system's free Page Table Entries could fall perilously low, which could
hamper the Virtual Memory Manager's ability to map virtual memory pages
to physical memory pages.

But wait, that is not all, there is another catch with the /3GB switch.
Windows 2000 Professional and Windows 2000 Server do not support this
switch. You can still use the switch in the boot.ini file but it will
have a bit of a nasty unexpected effect. Using the switch on these
operating systems will limit the kernel space to 1GB but it will not
increase the user-mode process space to 3GB, the user-mode space will
remain at 2GB! In effect using this switch on those operating systems
simply reduces the available space by 1GB and does nothing for the
applications! The use of the switch on Windows 2000 or Windows 2000
Server is useful for testing drivers to see how they behave within the
limited kernel space but other than that the switch is of not much use.

Address Windowing Extensions (AWE) is another technique that can be used
to truly increase available memory for the applications but that is
another subject for another post.

You may find the following articles informative:

Virtual Address Space
http://msdn2.microsoft.com/en-us/library/aa366912.aspx

Memory Management - Demystifying /3GB
http://blogs.technet.com/askperf/archive/2007/03/23/memory-management-demystifying-3gb.aspx

A description of the 4 GB RAM Tuning feature and the Physical Address
Extension switch
http://support.microsoft.com/kb/291988/
http://technet2.microsoft.com/windo...0239-4a8b-90c1-612e70b729c81033.mspx?mfr=true

How to configure SQL Server to use more than 2 GB of physical memory
http://support.microsoft.com/kb/274750/en-us

John
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top