Explanation of Pagefile Usage as reported in the Task Manager

In this post i am trying to explain the usage of page file as reported in the task manager. Many of us beleive that the page file usage shown in the task manager is the actual usage but this is not so. The below explanation will clarify it.

PF Usage as reported in task manager in Windows XP and Windows Server 2003 is actually the system commit total. This number represents potential page file usage, not actual page file usage. It is how much page file space would be used if all the private committed virtual memory in the system had to be paged out all at once.

The task manager ;what it calls “pagefile usage” is actually the system commit charge (the total number of committed pages in the system). It can grow as high as the current commit limit, which is roughly the sum of all pagefiles and RAM .

Page file usage is ,the amount of Committed Bytes – I.e. the amount of memory that applications have asked to be backed by the page file. If the page files are big enough to cover this then there is no problem. Only when Committed Bytes approaches RAM size will you see any memory pressure that results in physical paging.

Memory: Committed Bytes

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

Number of bytes of virtual (not reserved) memory that has been committed. This number doesn’t necessarily represent page file usage because it includes private committed pages in physical memory that have never been paged out. Rather, it represents the amount of page file space that would be used if the process was completely made nonresident.

 Memory: Commit Limit

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

Number of bytes of virtual memory that can be committed without having to extend the paging files; if the paging files can be extended, this limit is not hard.

To use a reserved region of address space, you must allocate physical storage and then map this storage to the reserved region. This process is called committing physical storage. Physical storage is always committed in pages.

From the above we can conclude that ; the task manager values would not be the exact ones. If you want to monitor the page file usage then PERFMON is the best in this case and will give you an exact idea as to what is the exact usage. The perfmon logs show the actual Page file usage .

Example :-

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

My Windows 2003 test machine here shows > 300mb in TaskManager Page File Usage (i.e. Committed bytes), but < 2% actual Page File use in PerfMon. RAM is 512mb, Page File is 1gb. If TaskManager was showing actual Page File Usage then PerfMon would show 30% usage, not 2%. It shows 2% because there is no real paging going on because the 300mb of Committed memory all fits in my 512mb RAM. If I load up more programs to increase Committed Bytes so that it exceeded Physical RAM, then we would see paging, but not before.

Additional tips:-

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

There is no fixed page file size for a particular role of a server.

If you want to determine the right page file size for the system then take a perfmon under the working conditions and then analyze the usage over a period of time. That would give you figures from which you can calculate the paging and set the page file accordingly.

Ideally it is recommended as 1.5 times the physical memory size.

For a machine to capture a dump file (i.e the contents of memory ) Page File is mandatory and it should be located on the system drive . Page file size to capture a complete memory dump should be the size of physical RAM +1mb.

A 32 bit machine can have a maximum size of 4 GB. Simple calculation 32 bit address bus 2^32 = 4GB.

On a 64 bit machine generally the machines are with huge amount of RAM sizes . There the page file of the RAM size + 1MB would be sufficient.

Monitoring Pagefile usage through Perfmon :-

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

1.Click Start and go to Run and type in “perfmon”

2.In the Performance monitor window click the + sign next to Performance Logs and Alerts

3.On the Counter Logs right click and go to New Log Settings

4.Give the New Log Settings a name of your choice

5.Then click on the Add counters tab.

6. Type in the the server name that we want to monitor ( Example: in the format: \\Servername)

7.Under the performance object tab select Paging File and check the box’s All counters and All instances

8.Then click on the Add button and then go the Log Files tab and select the type of log you want.

9.Then click on Configure and specify the location where you want to or leave it at default

10.Set the limit of the logs . This depends on the duration you want to monitor . You need to keep it at 100 Mb atleast to capture a good number of samples.

11.Then click OK and click on the Schedule tab. Here select the option Manually(using the shortcut menu)

12.Then go to General tab and in the Run As box provide the administrator credentials and set the password.

13.Set the interval as per the time frame you wish to monitor the server. For a good analysis it is recommended that we have atleast 100 samples.

13.Then click on Apply and in the main Performance monitor window you would see the log with the name you provided earlier appear there.

14.Right click on that log and start it and continue to monitor the server