What metrics should be used to measure memory consumption of a program for performance test

memoryperformancetesting

I am asked to provide performance statistics for a program, one of them being memory consumption. I noticed that in perfmon or in .NET API there is apparently many variable related to memory usage, such as private bit, working set, page file, etc.

What are the difference, and which one should we use for measuring performance? If the vendor claims that the memory consumption of the program is improved in version X, what value can be used to validate this?

Best Answer

First off, you need to know whether the application is written in a .NET managed language or not, if not, some memory profiling options won't be available to you.

Secondly, what is it you are being asked to do? Monitor the program externally? In another application? From PerfMon.exe? Or add memory profiling into the application code itself?

If you are monitoring it externally and just want to check it's memory footprint, try using permon.exe / "Performance Monitor", and adding a counter for Process->Private Bytes and attach it to the process you want information about.

If you are monitoring it internally, it depends on the language, etc. so it's hard for me to be specific, let me know and I'll add more if needed.

Edit: Well it seems a bit pointless to me writing an application when there is a perfectly good one already there for you to use in PerfMon? But as a reference for what is what, take a look at the following:

Otherwise just Google the name of the performance counter and I'm sure somewhere there will be a description of what it is / does.

Related Topic