objective cpu usage [for qa]

Posted on 2014-01-01
Medium Priority
Last Modified: 2014-01-01

I need to measure cpu usage of a process for performance qa.
I would like to get an indication that would be relevant in different machines with different resources and numbers of cpu's. The value of % cpu is not good enough , because testing in a different environment [with more cpu's] will give a different value.
Is there some way [maybe a program] to get number of cpu threads or something of the sort [similar to amount of memory usage value] ?
Question by:pulke13
  • 3
  • 2
LVL 12

Expert Comment

by:Gregory Miller
ID: 39749930
You might have a look at this tool.

They have dozens of free and very nice tools for analysis of systems and networks.

Author Comment

ID: 39750225
thank you for the response.
This doesn't address my question. I know about this tool.
The problem is that it shows the percent of the cpu that a process is using.
So if for example I run that process in a machine with 4 cpu's - the percentage won't be the same as in a machine with 1 cpu.
I want to know if there is a way to get objective data. Like that number of memory bytes used by a process. The number of [cpu threads?] x of the cpu [not percentage].
thank you.
LVL 12

Accepted Solution

Gregory Miller earned 2000 total points
ID: 39750309
I do not mean to seem argumentative but wanted to kick this around a bit. You have an application that you are wanting to measure on differing types of systems with different processors, single core vs. multicore. I get that. Unless your application is written expressly to exploit multiple cores or processors in parallel, your results for utilization whether it be a single core and a dual quad core, assuming the core frequency is the same, will net you fairly close to the same performance. Taking all other possible influences out of the picture like cache onboard the CPU, I/O bottlenecks that force the cpu to wait, system RAM, etc. All things equal, and the CPUs are from the same family, I think you would realize a result that was the same or very, very close to the same.

As for looking at the percentages, yes the aggregate is usually such that if it takes 80% of the CPU on one core of a quad code, the aggregate will show 20%. In comparison, on a single core cpu with all factors the same, the same process will consume the same 80%.

On the Process Explorer, you can drill down for each process and see all of the threads a process is using as well as the CPU cycle count as well.

Another tool they have on the site is PsList which give a live snapshot of process consumption, including Priority, Thread Count Handle Count, Private Virtual Memory, CPU Time (not percentage but actual CPU usage time logged, and much more...

Another option may be to setup a Performance Monitor from within Windows itself. You can define Data Collector Sets which will log quite a bit of detail about the process you are running and it produces some nice reports too. The nice thing is you can save these configurations and move them to any machine and you are ready to go without fear you might forget to add something or the wrong thing and you have to do it again.

These are just some ideas, nothing more... Can any of this help you get to where you need to be for data collection?
LVL 12

Expert Comment

by:Gregory Miller
ID: 39750314
Here is a test I ran for 1 minute on my workstation using Windows Performance Monitor as an example of the types of output you can get from it... I hope it does not show too many secrets about my computer... lol

I picked on process that was currently running and would register some numbers instead of just sleeping. The process was CarboniteService and it ran for roughly one minute measuring all of the topics under the Process category. There are hundreds of categories so look it over as an option.
<OBJECT ID="DISystemMonitor1" WIDTH="100%" HEIGHT="100%"
	<PARAM NAME="_Version" VALUE="458755"/>
	<PARAM NAME="_ExtentX" VALUE="20876"/>
	<PARAM NAME="_ExtentY" VALUE="15822"/>
	<PARAM NAME="DisplayType" VALUE="3"/>
	<PARAM NAME="ReportValueType" VALUE="0"/>
	<PARAM NAME="MaximumScale" VALUE="100"/>
	<PARAM NAME="MinimumScale" VALUE="0"/>
	<PARAM NAME="ShowLegend" VALUE="1"/>
	<PARAM NAME="ShowToolbar" VALUE="1"/>
	<PARAM NAME="ShowScaleLabels" VALUE="1"/>
	<PARAM NAME="ShowHorizontalGrid" VALUE="0"/>
	<PARAM NAME="ShowVerticalGrid" VALUE="0"/>
	<PARAM NAME="ShowValueBar" VALUE="1"/>
	<PARAM NAME="ManualUpdate" VALUE="1"/>
	<PARAM NAME="Highlight" VALUE="0"/>
	<PARAM NAME="ReadOnly" VALUE="0"/>
	<PARAM NAME="MonitorDuplicateInstances" VALUE="1"/>
	<PARAM NAME="UpdateInterval" VALUE="1"/>
	<PARAM NAME="DisplayFilter" VALUE="1"/>
	<PARAM NAME="BackColorCtl" VALUE="-2147483633"/>
	<PARAM NAME="ForeColor" VALUE="-1"/>
	<PARAM NAME="BackColor" VALUE="-1"/>
	<PARAM NAME="GridColor" VALUE="8421504"/>
	<PARAM NAME="TimeBarColor" VALUE="255"/>
	<PARAM NAME="BorderStyle" VALUE="0"/>
	<PARAM NAME="TimeAxisLabels" VALUE="1"/>
	<PARAM NAME="Tooltip" VALUE="1"/>
	<PARAM NAME="NextCounterColor" VALUE="12"/>
	<PARAM NAME="NextCounterWidth" VALUE="0"/>
	<PARAM NAME="NextCounterLineStyle" VALUE="1"/>
	<PARAM NAME="MaximumSamples" VALUE="6"/>
	<PARAM NAME="GraphTitle" VALUE=""/>
	<PARAM NAME="YAxisLabel" VALUE=""/>
	<PARAM NAME="DigitGrouping" VALUE="1"/>
	<PARAM NAME="WrapTimeLine" VALUE="1"/>
	<PARAM NAME="DataSourceType" VALUE="2"/>
	<PARAM NAME="LogViewStart" VALUE="1/1/2014 4:32:43 PM"/>
	<PARAM NAME="LogViewStop" VALUE="1/1/2014 4:33:58 PM"/>
	<PARAM NAME="SqlDsnName" VALUE=""/>
	<PARAM NAME="SqlLogSetName" VALUE=""/>
	<PARAM NAME="LogFileName001" VALUE="U:\Users\GeekPatrol\Desktop\EE-Test\GEEK001_20140101-000001\DataCollector01.blg"/>
	<PARAM NAME="LogFileCount" VALUE="1"/>
	<PARAM NAME="AmbientFont" VALUE="1"/>
	<PARAM NAME="LegendColumnWidths" VALUE="	7.97385620915033E-02	7.97385620915033E-02	0.2	9.93464052287582E-02	9.93464052287582E-02	0.2	0.16078431372549"/>
	<PARAM NAME="LegendSortDirection" VALUE="-2"/>
	<PARAM NAME="LegendSortColumn" VALUE="0"/>
	<PARAM NAME="CounterCount" VALUE="28"/>
	<PARAM NAME="MaximumSamples" VALUE="6"/>
	<PARAM NAME="SampleCount" VALUE="0"/>
	<PARAM NAME="TimeStamps" VALUE="130330675630000000	130330675780000000	130330675930000000	130330676080000000	130330676230000000	130330676390000000"/>
	<PARAM NAME="Counter00001.Path" VALUE="\\GEEK001\Process(_Total)\% Privileged Time"/>
	<PARAM NAME="Counter00001.Color" VALUE="8388736"/>
	<PARAM NAME="Counter00001.Width" VALUE="1"/>
	<PARAM NAME="Counter00001.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00001.ScaleFactor" VALUE="-1"/>
	<PARAM NAME="Counter00001.Show" VALUE="1"/>
	<PARAM NAME="Counter00001.Selected" VALUE="0"/>
	<PARAM NAME="Counter00002.Path" VALUE="\\GEEK001\Process(_Total)\% Processor Time"/>
	<PARAM NAME="Counter00002.Color" VALUE="755384"/>
	<PARAM NAME="Counter00002.Width" VALUE="1"/>
	<PARAM NAME="Counter00002.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00002.ScaleFactor" VALUE="-1"/>
	<PARAM NAME="Counter00002.Show" VALUE="1"/>
	<PARAM NAME="Counter00002.Selected" VALUE="0"/>
	<PARAM NAME="Counter00003.Path" VALUE="\\GEEK001\Process(_Total)\% User Time"/>
	<PARAM NAME="Counter00003.Color" VALUE="16711935"/>
	<PARAM NAME="Counter00003.Width" VALUE="1"/>
	<PARAM NAME="Counter00003.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00003.ScaleFactor" VALUE="-1"/>
	<PARAM NAME="Counter00003.Show" VALUE="1"/>
	<PARAM NAME="Counter00003.Selected" VALUE="0"/>
	<PARAM NAME="Counter00004.Path" VALUE="\\GEEK001\Process(_Total)\Creating Process ID"/>
	<PARAM NAME="Counter00004.Color" VALUE="32896"/>
	<PARAM NAME="Counter00004.Width" VALUE="1"/>
	<PARAM NAME="Counter00004.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00004.ScaleFactor" VALUE="-1"/>
	<PARAM NAME="Counter00004.Show" VALUE="1"/>
	<PARAM NAME="Counter00004.Selected" VALUE="0"/>
	<PARAM NAME="Counter00005.Path" VALUE="\\GEEK001\Process(_Total)\Elapsed Time"/>
	<PARAM NAME="Counter00005.Color" VALUE="32768"/>
	<PARAM NAME="Counter00005.Width" VALUE="1"/>
	<PARAM NAME="Counter00005.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00005.ScaleFactor" VALUE="-4"/>
	<PARAM NAME="Counter00005.Show" VALUE="1"/>
	<PARAM NAME="Counter00005.Selected" VALUE="0"/>
	<PARAM NAME="Counter00006.Path" VALUE="\\GEEK001\Process(_Total)\Handle Count"/>
	<PARAM NAME="Counter00006.Color" VALUE="11788021"/>
	<PARAM NAME="Counter00006.Width" VALUE="1"/>
	<PARAM NAME="Counter00006.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00006.ScaleFactor" VALUE="-3"/>
	<PARAM NAME="Counter00006.Show" VALUE="1"/>
	<PARAM NAME="Counter00006.Selected" VALUE="0"/>
	<PARAM NAME="Counter00007.Path" VALUE="\\GEEK001\Process(_Total)\ID Process"/>
	<PARAM NAME="Counter00007.Color" VALUE="65535"/>
	<PARAM NAME="Counter00007.Width" VALUE="1"/>
	<PARAM NAME="Counter00007.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00007.ScaleFactor" VALUE="-1"/>
	<PARAM NAME="Counter00007.Show" VALUE="1"/>
	<PARAM NAME="Counter00007.Selected" VALUE="0"/>
	<PARAM NAME="Counter00008.Path" VALUE="\\GEEK001\Process(_Total)\IO Data Bytes/sec"/>
	<PARAM NAME="Counter00008.Color" VALUE="55295"/>
	<PARAM NAME="Counter00008.Width" VALUE="1"/>
	<PARAM NAME="Counter00008.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00008.ScaleFactor" VALUE="-4"/>
	<PARAM NAME="Counter00008.Show" VALUE="1"/>
	<PARAM NAME="Counter00008.Selected" VALUE="0"/>
	<PARAM NAME="Counter00009.Path" VALUE="\\GEEK001\Process(_Total)\IO Data Operations/sec"/>
	<PARAM NAME="Counter00009.Color" VALUE="16760576"/>
	<PARAM NAME="Counter00009.Width" VALUE="1"/>
	<PARAM NAME="Counter00009.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00009.ScaleFactor" VALUE="-1"/>
	<PARAM NAME="Counter00009.Show" VALUE="1"/>
	<PARAM NAME="Counter00009.Selected" VALUE="0"/>
	<PARAM NAME="Counter00010.Path" VALUE="\\GEEK001\Process(_Total)\IO Other Bytes/sec"/>
	<PARAM NAME="Counter00010.Color" VALUE="16776960"/>
	<PARAM NAME="Counter00010.Width" VALUE="1"/>
	<PARAM NAME="Counter00010.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00010.ScaleFactor" VALUE="-5"/>
	<PARAM NAME="Counter00010.Show" VALUE="1"/>
	<PARAM NAME="Counter00010.Selected" VALUE="0"/>
	<PARAM NAME="Counter00011.Path" VALUE="\\GEEK001\Process(_Total)\IO Other Operations/sec"/>
	<PARAM NAME="Counter00011.Color" VALUE="10907866"/>
	<PARAM NAME="Counter00011.Width" VALUE="1"/>
	<PARAM NAME="Counter00011.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00011.ScaleFactor" VALUE="-2"/>
	<PARAM NAME="Counter00011.Show" VALUE="1"/>
	<PARAM NAME="Counter00011.Selected" VALUE="0"/>
	<PARAM NAME="Counter00012.Path" VALUE="\\GEEK001\Process(_Total)\IO Read Bytes/sec"/>
	<PARAM NAME="Counter00012.Color" VALUE="16776960"/>
	<PARAM NAME="Counter00012.Width" VALUE="1"/>
	<PARAM NAME="Counter00012.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00012.ScaleFactor" VALUE="-4"/>
	<PARAM NAME="Counter00012.Show" VALUE="1"/>
	<PARAM NAME="Counter00012.Selected" VALUE="0"/>
	<PARAM NAME="Counter00013.Path" VALUE="\\GEEK001\Process(_Total)\IO Read Operations/sec"/>
	<PARAM NAME="Counter00013.Color" VALUE="65280"/>
	<PARAM NAME="Counter00013.Width" VALUE="1"/>
	<PARAM NAME="Counter00013.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00013.ScaleFactor" VALUE="-1"/>
	<PARAM NAME="Counter00013.Show" VALUE="1"/>
	<PARAM NAME="Counter00013.Selected" VALUE="0"/>
	<PARAM NAME="Counter00014.Path" VALUE="\\GEEK001\Process(_Total)\IO Write Bytes/sec"/>
	<PARAM NAME="Counter00014.Color" VALUE="11788021"/>
	<PARAM NAME="Counter00014.Width" VALUE="1"/>
	<PARAM NAME="Counter00014.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00014.ScaleFactor" VALUE="-4"/>
	<PARAM NAME="Counter00014.Show" VALUE="1"/>
	<PARAM NAME="Counter00014.Selected" VALUE="0"/>
	<PARAM NAME="Counter00015.Path" VALUE="\\GEEK001\Process(_Total)\IO Write Operations/sec"/>
	<PARAM NAME="Counter00015.Color" VALUE="10907866"/>
	<PARAM NAME="Counter00015.Width" VALUE="1"/>
	<PARAM NAME="Counter00015.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00015.ScaleFactor" VALUE="-1"/>
	<PARAM NAME="Counter00015.Show" VALUE="1"/>
	<PARAM NAME="Counter00015.Selected" VALUE="0"/>
	<PARAM NAME="Counter00016.Path" VALUE="\\GEEK001\Process(_Total)\Page Faults/sec"/>
	<PARAM NAME="Counter00016.Color" VALUE="16711680"/>
	<PARAM NAME="Counter00016.Width" VALUE="1"/>
	<PARAM NAME="Counter00016.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00016.ScaleFactor" VALUE="-2"/>
	<PARAM NAME="Counter00016.Show" VALUE="1"/>
	<PARAM NAME="Counter00016.Selected" VALUE="0"/>
	<PARAM NAME="Counter00017.Path" VALUE="\\GEEK001\Process(_Total)\Page File Bytes"/>
	<PARAM NAME="Counter00017.Color" VALUE="16760576"/>
	<PARAM NAME="Counter00017.Width" VALUE="1"/>
	<PARAM NAME="Counter00017.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00017.ScaleFactor" VALUE="-8"/>
	<PARAM NAME="Counter00017.Show" VALUE="1"/>
	<PARAM NAME="Counter00017.Selected" VALUE="0"/>
	<PARAM NAME="Counter00018.Path" VALUE="\\GEEK001\Process(_Total)\Page File Bytes Peak"/>
	<PARAM NAME="Counter00018.Color" VALUE="55295"/>
	<PARAM NAME="Counter00018.Width" VALUE="1"/>
	<PARAM NAME="Counter00018.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00018.ScaleFactor" VALUE="-8"/>
	<PARAM NAME="Counter00018.Show" VALUE="1"/>
	<PARAM NAME="Counter00018.Selected" VALUE="0"/>
	<PARAM NAME="Counter00019.Path" VALUE="\\GEEK001\Process(_Total)\Pool Nonpaged Bytes"/>
	<PARAM NAME="Counter00019.Color" VALUE="255"/>
	<PARAM NAME="Counter00019.Width" VALUE="1"/>
	<PARAM NAME="Counter00019.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00019.ScaleFactor" VALUE="-5"/>
	<PARAM NAME="Counter00019.Show" VALUE="1"/>
	<PARAM NAME="Counter00019.Selected" VALUE="0"/>
	<PARAM NAME="Counter00020.Path" VALUE="\\GEEK001\Process(_Total)\Pool Paged Bytes"/>
	<PARAM NAME="Counter00020.Color" VALUE="255"/>
	<PARAM NAME="Counter00020.Width" VALUE="1"/>
	<PARAM NAME="Counter00020.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00020.ScaleFactor" VALUE="-6"/>
	<PARAM NAME="Counter00020.Show" VALUE="1"/>
	<PARAM NAME="Counter00020.Selected" VALUE="0"/>
	<PARAM NAME="Counter00021.Path" VALUE="\\GEEK001\Process(_Total)\Priority Base"/>
	<PARAM NAME="Counter00021.Color" VALUE="8388608"/>
	<PARAM NAME="Counter00021.Width" VALUE="1"/>
	<PARAM NAME="Counter00021.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00021.ScaleFactor" VALUE="0"/>
	<PARAM NAME="Counter00021.Show" VALUE="1"/>
	<PARAM NAME="Counter00021.Selected" VALUE="0"/>
	<PARAM NAME="Counter00022.Path" VALUE="\\GEEK001\Process(_Total)\Private Bytes"/>
	<PARAM NAME="Counter00022.Color" VALUE="8388608"/>
	<PARAM NAME="Counter00022.Width" VALUE="1"/>
	<PARAM NAME="Counter00022.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00022.ScaleFactor" VALUE="-8"/>
	<PARAM NAME="Counter00022.Show" VALUE="1"/>
	<PARAM NAME="Counter00022.Selected" VALUE="0"/>
	<PARAM NAME="Counter00023.Path" VALUE="\\GEEK001\Process(_Total)\Thread Count"/>
	<PARAM NAME="Counter00023.Color" VALUE="16711935"/>
	<PARAM NAME="Counter00023.Width" VALUE="1"/>
	<PARAM NAME="Counter00023.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00023.ScaleFactor" VALUE="-2"/>
	<PARAM NAME="Counter00023.Show" VALUE="1"/>
	<PARAM NAME="Counter00023.Selected" VALUE="0"/>
	<PARAM NAME="Counter00024.Path" VALUE="\\GEEK001\Process(_Total)\Virtual Bytes"/>
	<PARAM NAME="Counter00024.Color" VALUE="11193702"/>
	<PARAM NAME="Counter00024.Width" VALUE="1"/>
	<PARAM NAME="Counter00024.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00024.ScaleFactor" VALUE="-9"/>
	<PARAM NAME="Counter00024.Show" VALUE="1"/>
	<PARAM NAME="Counter00024.Selected" VALUE="0"/>
	<PARAM NAME="Counter00025.Path" VALUE="\\GEEK001\Process(_Total)\Virtual Bytes Peak"/>
	<PARAM NAME="Counter00025.Color" VALUE="8388736"/>
	<PARAM NAME="Counter00025.Width" VALUE="1"/>
	<PARAM NAME="Counter00025.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00025.ScaleFactor" VALUE="-9"/>
	<PARAM NAME="Counter00025.Show" VALUE="1"/>
	<PARAM NAME="Counter00025.Selected" VALUE="0"/>
	<PARAM NAME="Counter00026.Path" VALUE="\\GEEK001\Process(_Total)\Working Set"/>
	<PARAM NAME="Counter00026.Color" VALUE="65280"/>
	<PARAM NAME="Counter00026.Width" VALUE="1"/>
	<PARAM NAME="Counter00026.LineStyle" VALUE="1"/>
	<PARAM NAME="Counter00026.ScaleFactor" VALUE="-8"/>
	<PARAM NAME="Counter00026.Show" VALUE="1"/>
	<PARAM NAME="Counter00026.Selected" VALUE="0"/>
	<PARAM NAME="Counter00027.Path" VALUE="\\GEEK001\Process(_Total)\Working Set - Private"/>
	<PARAM NAME="Counter00027.Color" VALUE="16711680"/>
	<PARAM NAME="Counter00027.Width" VALUE="1"/>
	<PARAM NAME="Counter00027.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00027.ScaleFactor" VALUE="-8"/>
	<PARAM NAME="Counter00027.Show" VALUE="1"/>
	<PARAM NAME="Counter00027.Selected" VALUE="0"/>
	<PARAM NAME="Counter00028.Path" VALUE="\\GEEK001\Process(_Total)\Working Set Peak"/>
	<PARAM NAME="Counter00028.Color" VALUE="65535"/>
	<PARAM NAME="Counter00028.Width" VALUE="1"/>
	<PARAM NAME="Counter00028.LineStyle" VALUE="0"/>
	<PARAM NAME="Counter00028.ScaleFactor" VALUE="-8"/>
	<PARAM NAME="Counter00028.Show" VALUE="1"/>
	<PARAM NAME="Counter00028.Selected" VALUE="0"/>
	<PARAM NAME="Selected: %s" VALUE="\\GEEK001\Process(_Total)\Pool Paged Bytes"/>

Open in new window


Author Comment

ID: 39750335
thank you very much for your comprehensive answer.

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

this article is a guided solution for most of the common server issues in server hardware tasks we are facing in our routine job works. the topics in the following article covered are, 1) dell hardware raidlevel (Perc) 2) adding HDD 3) how t…
New style of hardware planning for Microsoft Exchange server.
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …

607 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question