PerfGuide: Out of System Committed Memory

PerfGuide: Out of System Committed Memory



You have arrived here because you have identified a high system commit usage condition. If this is not correct, then return to the Start of the Performance Guide.

The Commit Limit

The Commit Limit of Windows is the total amount of RAM and the size of all of the page files combined on the system. It is the maximum amount of system committed memory that the system can handle unless RAM is "hot-added" or the page file is increased.

The Commit Charge or Committed Bytes is the total amount of memory used/committed by the operating system and all processes running on the computer. This memory is "in use" and has been written to by a process or by the kernel.

Taskmanager 

The above screenshot is of Windows Task Manager on Windows 7. Highlighted in red is the System Commit Charge (2074 MB) and the System Commit Limit (8058 MB).

If the System Commit Charge reaches the System Commit Limit, then the system will attempt to increase the page file size (if set to System Managed), otherwise, the system will be in an out of memory condition. The percentage of the System Commit Charge compared to the System Commit Limit can be measured using the "\Memory\% Committed Bytes In use" performance counter.

Process Committed Memory

Processes operate in virtual memory and are unaware of the true physical environment of the computer, but when an application "commits" memory, then the operating system guarantees physical memory for the allocation. When the application writes to memory such as writing a value to a variable, then the memory is mapped to physical memory and adds to the System Commit Charge.

Windows - Virtual Memory Minimum Too Low

When the Windows operating system reports that it is low on "virtual memory" and mentions increasing the paging file, then it means that the System Commit Charge has reached the System Commit Limit. The paging file is commonly referred to as "virtual" RAM, hense this reference. Unfortunately, the concept of process and kernel virtual memory is an entirely different subject unrelated to the system commit limit.

  

Troubleshooting

If the "\Memory\% Committed Bytes In use" performance counter is over 75%, then the system is close to running out of memory (both RAM and all page files). To troubleshoot this issue, try to find the highest consumers of committed memory:

  1. Identify which Processes are Consuming the Most Committed Memory: The “Private Bytes” of a process is the amount of private committed memory (process heap memory) within a process. Look at “\Process(*)\Private Bytes” to see which processes are consuming the most and which are on an increasing trend over a long period of time. Keep in mind that Private Bytes is potential pagable memory and cannot be measured by looking at just RAM usage (Working Set) alone. If you have identified processes consuming significant amounts of committed memory, then go here. [Link to future article]
  2. Is System Cache Consuming RAM: If the values from the “\Memory\Cache Bytes” and/or “\Memory\System Cache Resident Bytes” performance counters are large or more than 50% of RAM, then go here [Link to future article]. System Cache is used by the Windows Cache Manager to allow separate processes to have the most up to date versions of a file.
  3. Is the Computer a Virtual Computer: Some virtual computer hosts might remove RAM from the virtual computer when the host or other virtual computers are low on RAM. If you suspect this condition, then consult with your virtual server software vendor and/or add RAM to to the host and virtual computer.

Treating the Symptoms

If all of the above troubleshooting steps have been exhausted, then the symptoms of a high system commit charge can be treated with one or more of the following:

  1. Add RAM: More RAM will increase the amount available to the system.
  2. Increase Page File Access Speeds: When the computer is low on available RAM, it will aggressively page out the working sets of processes. If read/write speeds to the page file are delayed due to other disk activity, then consider placing the page file on faster disks. See Disk performance [Link to future blog post].
  3. Increase the Page File or Add more Page Files: When the computer is low on available RAM, it will aggressively page out the working sets of processes. Adding more page files, increasing the maximum range, or allowing the system to manage the page file(s) will allow it to page out more memory. See troubleshooting committed memory here [Link to future blog post].
  4. Avoid “Memory Optimizers”: Windows is very efficient at managing memory. So called, “memory optimizers” simply force the kernel to delete its disk cache and trim the working sets (more paging) of processes. All this does is cause a lot of unnecessary disk I/O.

 

More Information

Vital Signs Workshop: Microsoft Services offers an instructor led workshop called, "Vital Signs", which goes in depth into Windows architecture focused on Windows performance analysis. If you are interested, then contact your Microsoft Technical Account Manager (TAM). If you do not have a Microsoft Premier Support contract, then consider the great benefits of having one by going to our Microsoft Services Premier Support web site at: http://www.microsoft.com/microsoftservices/en/us/support_premier.aspx

 

Sort by: Published Date | Most Recent | Most Useful
Comments
  • "If you have identified processes consuming significant amounts of committed memory, then go here. [Link to future article]"

    Is the "future article" already exist?

  • Hi Jegor,

    I'm slowly working on them as I have time which unfortunately is in short supply. I am also trying to work on a book on this subject. Hopefully, I will be active on both soon.

Page 1 of 1 (2 items)