Unexpected behavior (excessive paging, resources low) using /PAE in boot.ini w/ 12 Gb RAM
Posted on 2006-04-25
I'm a Linux/Sun guy just now getting acquainted with more advanced usage of Windows, so please be gentle. :)
We recently rebuilt a server previously using Windows 2000 Server w/ MS SQL Server 2000 to a Windows 2003 Enterprise Server (32-bit) platform with MS SQL Server 2000 Enterprise Edition. The reason for this was our findings that our application was so SQL Server instensive that we really needed to give SQL Server more RAM. Please note that Terminal Services is installed and is being used in remote administration mode on this server - both now and before the upgrade. Also, I should note that because our media didn't get to us in time, I have the trial version of 2003 Enterprise Server installed currently, with a planned upgrade/reinstall to happen soon.
Having read several articles both here and elsewhere regarding the /PAE switch and how RAM is addressed in the 32-bit OS, I thought I knew exactly what I should do and what to expect. However, after upgrading to 12 Gb RAM, installing Windows 2003 and SQL Server 2000 Enterprise all at once, I've encountered something I'm not sure I understand.
First, I thought that I needed to add the /PAE switch in boot.ini for the OS to address more than 4 Gb of RAM. Well, even with it not in there, task manager and several other programs tell me I have 12 Gb. However, I've added the /PAE switch since, figuring that it's best I just do what I'm told. :)
My issue is this -- SQL Server chugs along fine and makes good use of the new RAM if nothing else is running, but whenever I run additional applications, resources available to the OS appear to be low. For example, even though CPU usage is minimal (i.e. 25% absolute max), nearly 2 Gb of physical RAM is available, and page faults are at max a consistent 12 per second (seems high to me, but I'm not sure), it doesn't let me open Windows Explorer, Task Manager, or similar utilities we may run. It just ignores me until the application finishes what it's doing. Even when I boot the server, I get an error (I apologize for not having it verbatim) which tells me something like "An error was encountered while trying to allocate memory to desktop. Check the Event Log for details." (though no such details are logged in the System or Application log). For the record, these issues do NOT occur when we reduce the amount of RAM SQL Server uses to 4 Gb. (We're planning to try incrementing back up to 10 Gb to see exactly when the problem begins but haven't gotten there yet.)
I think my problem is in understanding what I'm reading regarding the Physical Address Extension (PAE) mode. Should it really be just as simple as adding the /PAE switch to boot.ini and expecting the OS to handle memory management as intelligently as it would if I were below the 4 Gb limit? Or are there gotchas I need to be concerned with?
Basically, the additional application I need to run on this server is a somewhat proprietary application which runs reports and spits the output into SQL Server. It runs up to 5 processes at a time, all of which use no more than 12 Mb of RAM apiece. I feel like allowing 2 Gb of RAM to this application and the OS is more than enough, but I'm not sure why when I try to devote 10 of my 12 Gb to SQL Server, there seems to be little left for the OS to use.
I recognize that aside from the error at bootup about memory allocation, it could be an issue with the proprietary application (though it only starts when manually executed and not at boot), and I am prepared to dedicate this server to SQL Server and move the application to another server. But I am wondering if the information I provided triggers any thoughts with the experts here. Am I likely not allowing enough RAM to the OS? Are there other switches I should be using in boot.ini as opposed to or in conjunction with /PAE? Is the number of page faults I am seeing indicative of my problem, or am making a mountain out of a molehill with those numbers?
Any and all thoughts are appreciated.