使用的PerformanceCounter在.NET来衡量CPU使用率的正确方法(Correct w

2019-06-26 07:37发布

我想衡量一个web服务我的商业类的性能。 我怎样才能做到这一点通过编码?

我想知道我的商务舱多少CPU消耗来执行它的操作,以及如何在Web服务得到多个同时服务电话也表现不一。

我不想衡量我的Web服务的性能; 我只是想知道我的业务类是如何执行。

我的想法:

阅读一些博客后,我决定写一些代码段,这将创建一个PerformanceCounter ,如下图所示。 从这个代码,我可以用一个创建多个线程for循环。 每个线程会打电话给我的班。 而在同for圈,我会打电话给NextValue()在柜台上的实例方法。

System.Diagnostics.PerformanceCounter CpuCounter = new System.Diagnostics.PerformanceCounter();
            CpuCounter.CategoryName = "Process";
            CpuCounter.CounterName = "% Processor Time";
            CpuCounter.InstanceName = Process.GetCurrentProcess().ProcessName;

问题:

  1. 这是方法正确吗?
  2. 我将使用“过程”类或“处理器”的范畴?
  3. 我怎样才能获得的性能数据来创建一些报告出来的吗? 例如将100个同时线程,CPU使用率是70%,与200个线程它去高达90%等。
  4. 我的业务逻辑,结束得非常快。 并且,另一方面, NextValue()方法一秒的间隔之后如在提及给正确的值这博客。 我该如何处理呢?
  5. 有时, NextValue()方法给出了以上100值是否意味着CPU使用率超过100%? (我想,这个计数器的值不应被理解为CPU的使用率%。对吗?)

注:我使用的是Windows 7专业版和英特尔酷睿i5处理器。 这是我第一次使用性能计数器。 因此,一些问题可能是愚蠢的。

Answer 1:

我已经回答了你在下面顺序问题:

1:前提是你的业务类是应用程序活跃评测期间仅部分,是的。 但是,性能监视器是最适合的应用entier的大规模分析,它不是真正设计用于特定的方法。 要找出它需要CPU多少个周期才能完成你的BusinessClass.Work(),你最好使用像JetBrains公司dotTrace或展鹏的蚂蚁分析器。 这两种产品都提供免费试用。

2:流程是你在做什么正确的计数器

3:您可以添加自己的柜台,或在时间段进行测试。 这样做的简单的方法是在时间分片的方式,你基本上是运行一系列测试,只改变每个测试之间的一个变量。 在这两者之间的测试等待5-10秒钟没有活动,让您在您的性能监视器图中很好的休息。 你要设置性能计数器日志为好,这说明在这里。

4:请回答1,廓线多的方法级计时更好

5:这是预期。 你最大的CPU%,实际上是100 *处理器数量。 所以,如果你是酷睿i5双核,最大为200%,如果它是一个四核400%,等等。

请让我知道,如果你有任何问题。



文章来源: Correct way to use PerformanceCounter in .NET to measure CPU usage