If you have arrived here, then you have identified a low available RAM condition on your Windows computer. If this is not correct, then return to the Start of the Performance Guide.
Available RAM Concepts
When the counter “\Memory\Available MBytes" has a value less than 64, then the computer is low on available RAM. This is certainly a relative threshold because years ago when computers had only 100MBs of RAM, 64MBs of available RAM would have been a good thing. In this case, we assume at least 1GB of RAM is installed on the computer, therefore 64MBs would be considered too low.
The Available MBytes counter is the sum of all free, zero (a page of memory with all zeroes written to it), and standby pages of memory. All of this memory is page of RAM that can be reused for processes. Generally, about 10% of your RAM being available is considered good because that allows up to 10% of it to be used for disk cache – meaning if a file is being read from the disk, but it already has it in disk cache, then it reads it from RAM versus going to the disk. Disks are dramatically slower than RAM, so having a lot of RAM being used for disk cache is a good this. This is why it is a good thing to have more RAM.
If the “\Memory\Free & Zero Page List Bytes” counter constantly has over 100MBs or more of memory, then this means that you likely have too much RAM which isn’t a bad thing unless you are concerned about the electricity drain from the RAM modules.
If Available MBytes is less than 10% of RAM or less than 100 [MBs], then it is important to determine which processes are consuming the most RAM, the processes on an increasing trend or RAM usage, the System Cache memory usage, and if the system is reaching its commit limit.
- Is the System Low on Committed Memory: Lack of RAM may be a symptom of the system reaching its commit limit. If “\Memory\Committed Bytes In Use” is greater than 75%, then the computer may be running low on physical resources (RAM and/or page file). If you suspect this problem, then follow the link below. Otherwise, continue to step 3.
[Link to future blog post]
- Identify which Processes are Consuming the Most RAM: The “Working Set” of a process is the amount of RAM in use by a process. Look at “\Process(*)\Working Set” to see which processes are consuming the most RAM and which are on an increasing trend. Keep in mind that Working Set is only the amount of RAM usage of a process and does not show memory that has been paged out.
- Is System Cache Consuming RAM: If the values from the “\Memory\Cache Bytes” and/or “\Memory\System Cache Resident Bytes” performance counters are more than 50% of RAM, then go here. [Link to future blog post]
- 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 low available RAM can be treated with one or more of the following:
- Add RAM: More RAM will increase the amount available to the system.
- 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].
- 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].
- 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.