Solved

objective cpu usage [for qa]

Posted on 2014-01-01
5
485 Views
Last Modified: 2014-01-01
hello

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] ?
0
Comment
Question by:pulke13
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 11

Expert Comment

by:Gregory Miller
ID: 39749930
You might have a look at this tool.
http://technet.microsoft.com/en-us/sysinternals/bb896653

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

Author Comment

by:pulke13
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.
0
 
LVL 11

Accepted Solution

by:
Gregory Miller earned 500 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?
0
 
LVL 11

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%"
CLASSID="CLSID:C4D2D8E0-D1DD-11CE-940F-008029004347">
	<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"/>
</OBJECT>

Open in new window

0
 

Author Comment

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

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
How to get all the API from website? 11 161
HP DL360 G6 smart array 5 71
Virtual Disk RAID 0 - OMSA reporting it has bad blocks 6 71
Server Power 6 70
Hyper-convergence systems have taken the IT world by storm and have quickly started to change our point of view of how the data center should and could be architected. In this article, I’ll explain the benefits of employing a hyper-converged system …
Introduction This article is the first of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article explains our test automation goals. Then rationale is given for the tools we use to a…
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…

751 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