ubuysa
The BSOD Doctor
Most experienced users know that RAM is where program code and data are stored on which the CPUs are currently operating. It's important to appreciate that the CPUs can only operate on program code and data that is already in RAM - any program code or data that is not in RAM is effectively invisible to the CPUs. If a CPU is ever asked to access program code or data that is not in RAM the thread currently executing will be suspended until the program code or data has been loaded into RAM by the operating system. Once that process has completed the thread will be marked as ready and it will be available for execution again.
Consequently the total amount of RAM installed is critical to overall performance. Too little RAM and threads will lose control very often, the time spent suspended whilst waiting for program code and data to be loaded into RAM results in sluggish performance. Too much RAM is not a performance issue but an economic one, there is no point paying for lots of expensive RAM to sit idle and empty.
How do you know whether you have too little RAM installed? The likely first clue will be sluggish performance, but there are may other things that can cause sluggish performance, and poor hard disk management is the most common - by far. RAM is expensive so you don't want to be installing more RAM unless you know that RAM starvation really is a problem for you.
You cannot simply look at the total RAM used figure, in fact the RAM used figures shown in the Task Manager can themselves be confusing, so lets start by examining these values. Start the Task Manager and click the Performance tab, on that tab click the Memory icon on the left to display the memory (RAM) values. The numbers we are interested in are at the bottom..
In use/(Compressed). There are two numbers shown under this heading, the first is the In Use value and the second (in parentheses) is the subset of that which is Compressed memory. In Use is the total amount of RAM currently being used (including Compressed memory), this is what is shown in the larger of the two graphs above. Compressed memory is used to store the contents of pages (a page is 4kB in size) that would ordinarily be written out to the pagefile (more on this later), by keeping the contents of these pages in RAM the later disk read to recover these pages can be avoided and by storing them compressed they take up less RAM. On most systems the compressed memory is only a few megabytes in size.
Available. This is RAM that is immediately available for use. If you add the In Use and Available figures they should come to the total amount of installed RAM (with some rounding errors). The total amount of installed RAM is shown at the top right of the larger of the two graphs above.
Committed. There are two numbers shown under this heading, the first is the total amount of RAM that Windows has given permission to be used. Not all of that RAM may currently be in use however (In Use is always less than or equal to this number) it is simply the amount of RAM that has been requested by processes which Windows has approved. The second number is the total amount of RAM that Windows can possibly give commit permission for on this system (the commit maximum). It is usually much larger than the amount of installed RAM because it includes the maximum size of the pagefile - pages can exist either in RAM or on the pagefile and the sum of RAM + pagefile_size is the commit maximum.
Cached. This is RAM that is being used as a cache, typically to avoid having to write it to disk, which would entail a later disk read and the delays involved in that. Cached memory is included in the Available count because Windows can use it if needed (and the cache would be flushed to disk). Cached memory is part of available memory known as Standby memory, this is RAM that contains caches and program code and data that is not being used by any processes. All of Standby memory could be used by Windows if needed, program code and data would be flushed to the pagefile if required (if the pages have changed since first use).
Paged Pool - Non-Paged Pool. Page pools are areas of storage from which processes allocate extra RAM, for use as workspace in executing threads for example. There are two main types of pool, paged - which can be written out to the pagefile, and non-paged - which must be kept in RAM. The numbers here are the amount of the two types of page pool currently being used. These values are included in the In Use value we saw earlier. As far as performance is concerned these numbers have no real impact because there is nothing a user can do to affect them (beyond ensuring there is enough RAM to contain them of course).
In the smaller of the two graphs above you have a map of RAM usage. If you hover the cursor over each field a popup tells you what it contains. You'll see In Use and Compressed first, followed possibly by Modified - this is Standby memory that must be flushed to disk before it can be used, and then a big region of Standby memory - this can all be immediately used if required (or returned to the In Use memory if the pages are referenced again by the owning process). You may have another region called Free - this is RAM that Windows is not using for anything at all (though it could if required).
If you see no Free memory then don't worry. This is far from a problem, it means you have plenty of RAM installed - for the workloads you are running right now at least.
If you see very little (or even no) Standby memory then don't panic. This isn't a problem (yet), it simply means that Windows is actively using all the RAM you have - but for the workloads you are running right now it doesn't need any more RAM. You have exactly enough - at the moment. You will also see the In Use figure at or very close to the maximum installed RAM. Using all the RAM you have is not in itself a problem, it's actually good economics (although given the variability of workloads you should never plan to run at maximum RAM use).
This Task Manager page does give you a lot of information about your RAM but it cannot really tell you whether you have too little.
[continued in next post]
Consequently the total amount of RAM installed is critical to overall performance. Too little RAM and threads will lose control very often, the time spent suspended whilst waiting for program code and data to be loaded into RAM results in sluggish performance. Too much RAM is not a performance issue but an economic one, there is no point paying for lots of expensive RAM to sit idle and empty.
How do you know whether you have too little RAM installed? The likely first clue will be sluggish performance, but there are may other things that can cause sluggish performance, and poor hard disk management is the most common - by far. RAM is expensive so you don't want to be installing more RAM unless you know that RAM starvation really is a problem for you.
You cannot simply look at the total RAM used figure, in fact the RAM used figures shown in the Task Manager can themselves be confusing, so lets start by examining these values. Start the Task Manager and click the Performance tab, on that tab click the Memory icon on the left to display the memory (RAM) values. The numbers we are interested in are at the bottom..
In use/(Compressed). There are two numbers shown under this heading, the first is the In Use value and the second (in parentheses) is the subset of that which is Compressed memory. In Use is the total amount of RAM currently being used (including Compressed memory), this is what is shown in the larger of the two graphs above. Compressed memory is used to store the contents of pages (a page is 4kB in size) that would ordinarily be written out to the pagefile (more on this later), by keeping the contents of these pages in RAM the later disk read to recover these pages can be avoided and by storing them compressed they take up less RAM. On most systems the compressed memory is only a few megabytes in size.
Available. This is RAM that is immediately available for use. If you add the In Use and Available figures they should come to the total amount of installed RAM (with some rounding errors). The total amount of installed RAM is shown at the top right of the larger of the two graphs above.
Committed. There are two numbers shown under this heading, the first is the total amount of RAM that Windows has given permission to be used. Not all of that RAM may currently be in use however (In Use is always less than or equal to this number) it is simply the amount of RAM that has been requested by processes which Windows has approved. The second number is the total amount of RAM that Windows can possibly give commit permission for on this system (the commit maximum). It is usually much larger than the amount of installed RAM because it includes the maximum size of the pagefile - pages can exist either in RAM or on the pagefile and the sum of RAM + pagefile_size is the commit maximum.
Cached. This is RAM that is being used as a cache, typically to avoid having to write it to disk, which would entail a later disk read and the delays involved in that. Cached memory is included in the Available count because Windows can use it if needed (and the cache would be flushed to disk). Cached memory is part of available memory known as Standby memory, this is RAM that contains caches and program code and data that is not being used by any processes. All of Standby memory could be used by Windows if needed, program code and data would be flushed to the pagefile if required (if the pages have changed since first use).
Paged Pool - Non-Paged Pool. Page pools are areas of storage from which processes allocate extra RAM, for use as workspace in executing threads for example. There are two main types of pool, paged - which can be written out to the pagefile, and non-paged - which must be kept in RAM. The numbers here are the amount of the two types of page pool currently being used. These values are included in the In Use value we saw earlier. As far as performance is concerned these numbers have no real impact because there is nothing a user can do to affect them (beyond ensuring there is enough RAM to contain them of course).
In the smaller of the two graphs above you have a map of RAM usage. If you hover the cursor over each field a popup tells you what it contains. You'll see In Use and Compressed first, followed possibly by Modified - this is Standby memory that must be flushed to disk before it can be used, and then a big region of Standby memory - this can all be immediately used if required (or returned to the In Use memory if the pages are referenced again by the owning process). You may have another region called Free - this is RAM that Windows is not using for anything at all (though it could if required).
If you see no Free memory then don't worry. This is far from a problem, it means you have plenty of RAM installed - for the workloads you are running right now at least.
If you see very little (or even no) Standby memory then don't panic. This isn't a problem (yet), it simply means that Windows is actively using all the RAM you have - but for the workloads you are running right now it doesn't need any more RAM. You have exactly enough - at the moment. You will also see the In Use figure at or very close to the maximum installed RAM. Using all the RAM you have is not in itself a problem, it's actually good economics (although given the variability of workloads you should never plan to run at maximum RAM use).
This Task Manager page does give you a lot of information about your RAM but it cannot really tell you whether you have too little.
[continued in next post]
Last edited: