Tag: performancecounter

如何将性能计数器添加到我已创建的类别中

我已经创建了一个PerformanceCounterCategory,如下所示 var category = PerformanceCounterCategory.Create(“MyCat”, “Cat Help”, PerformanceCounterCategoryType.SingleInstance, “MyCounter”, “Counter Help); 如何在类别中添加新计数器以监控其他项目? 我找不到它的api。

了解内存性能计数器

[更新 – 2010年9月30日] 由于我在这个及相关主题上进行了很多研究,我会根据我在这里的答案中提供的经验和建议,写下我收集到的任何提示 – 1)使用内存分析器(尝试CLR Profiler,开始)并找到消耗max mem并对其进行微调的例程,如重用大数组,尝试将对象的引用保持为最小。 2)如果可能,分配小对象(对于.NET 2.0少于85k)并使用内存池,如果可以避免垃圾收集器的高CPU使用率。 3)如果增加对象的引用,则负责将它们取消引用相同的次数。 你会安心,代码可能会更好。 4)如果没有任何作用且您仍然无能为力,请使用消除方法(注释/跳过代码)来找出消耗大部分内存的内容。 在代码中使用内存性能计数器也可能对您有所帮助。 希望这些帮助! [原始问题] 嗨! 我在C#工作,我的问题是内存不足exception。 我在这里读了一篇关于LOH的优秀文章 – > http://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/ 太棒了! 并且, http://dotnetdebug.ne​​t/2005/06/30/perfmon-your-debugging-buddy/ 我的问题: 我在企业级桌面应用程序中遇到内存不足问题。 我试着阅读并理解有关内存分析和性能计数器的内容(尝试过WinDBG! – 一点点)但我仍然对基本内容毫无头绪。 我尝试使用CLR分析器来分析内存使用情况。 它有助于: 告诉我谁分配了大量的内存 什么数据类型使用最大内存 但是,CLR Profiler和Performance Counters(因为它们共享相同的数据)都无法解释: 每次运行应用程序后收集的数字 – 如何理解是否有任何改进?!?! 如何比较每次运行后的性能数据 – 特定计数器的优劣程度是低还是高? 我需要的: 我正在寻找以下提示: 如何释放(是,正确) 托管数据类型对象(如数组,大字符串) – 但如果可能的话,不要通过进行GC.Collect调用。 我必须时不时地处理长度为500KB(不可避免的大小:-()的字节数组。 如果发生碎片,如何压缩内存 – 因为似乎.NET GC并没有真正有效地做到这一点并导致OOM。 另外,LOH究竟有85KB的限制? […]

绩效柜台类别名称? (C#)

我正在尝试在性能计数器中编程到我的C#应用​​程序中,该应用程序启动另一个进程并检查该已启动进程的处理器使用情况。 据我了解,性能计数器类要求我分配类别名称,计数器名称和进程名称。 我可以很容易地获得流程名称,但是在互联网上是否有某种类型的列表,其中包含我可以分配的所有类别和计数器名称? 我试过在MSDN上搜索这样的东西,但我没找到任何东西。 感谢您的帮助!

如何获取进程使用的CPU周期数

我需要使用C#(或VB.Net)获取特定进程使用的CPU周期数。 此信息可在Sysinternal的Process Explorer中的Process properties弹出窗口中找到。 例如,我正在使用post发布此消息的浏览器目前使用了18,521,360,165个cyles(给出或接受了几亿)。 有谁知道如何从.Net应用程序获取此信息? 我知道如何获得CPU使用率(百分比),但这不是我正在寻找的。 我需要一种方法来比较在不同时间运行的两个不同进程之间的CPU使用情况。 谢谢,马特 更新: 我为什么需要这个? 我是本地.Net用户组的领导者,我们正在运行代码挑战,开发人员提交代码来解决问题。 我需要一种方法来衡量一个条目与另一个条目的表现。 目前我正在使用计时器来衡量性能。 服务器100%专用于此,但这并不能保证可能同时发生其他事情。 显然,这是各种潜在问题,但总的来说,它是相当准确的。 测量所使用的CPU周期数将是一种几乎万无一失的方法来衡量某人的入口对另一个人的表现。 我确信有人可以在这一点上打洞 – 不需要在这一点上尝试。 ;-)我希望这有助于解释我的问题背后的原因以及为什么计时器不足以解决我的问题。

如何在System.Diagnostics.Stopwatch中使用AverageTimer32和AverageBase性能计数器?

当我执行以下程序并查看性能计数器时,结果对我来说没有意义。 平均值为零,当我期望~0.1或~100时,最小/最大值为~0.4。 我的问题是什么? 码 class Program { const string CategoryName = “____Test Category”; const string CounterName = “Average Operation Time”; const string BaseCounterName = “Average Operation Time Base”; static void Main(string[] args) { if (PerformanceCounterCategory.Exists(CategoryName)) PerformanceCounterCategory.Delete(CategoryName); var counterDataCollection = new CounterCreationDataCollection(); var avgOpTimeCounter = new CounterCreationData() { CounterName = CounterName, CounterHelp = “Average Operation Time […]

在.NET中使用PerformanceCounter来测量CPU使用率的正确方法

我想在Web服务中衡量业务类的性能。 我怎么能通过编码来做到这一点? 我想知道我的业务类消耗多少CPU来执行其操作,以及如果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; 问题: 这种方法是否正确? 我应该使用“处理”类别还是“处理器”类别? 如何获取性能数据以创建一些报告? 例如,同时拥有100个线程,CPU使用率为70%,200个线程使用率达到90%等。 我的业务逻辑很快就结束了。 另一方面, NextValue()方法在本博客中提到的一秒间隔后给出正确的值。 我怎么处理这个? 有时, NextValue()方法给出的值大于100.这是否意味着CPU使用率超过100%? (我认为,此计数器的值不应解释为CPU的使用百分比。我是否正确?) 注意:我使用的是Windows 7 premium和Intel Core i5处理器。 这是我第一次使用性能计数器。 所以有些问题可能很愚蠢。

例外:实例“实例名称”在指定的类别中不存在

当我创建和使用这样的性能计数器时: private readonly PerformanceCounter _cpuPerformanceCounter; public ProcessViewModel(Process process) { _cpuPerformanceCounter = new PerformanceCounter(“Process”, “% Processor Time”, process.ProcessName, true); } public void Update() { CPU = (int)_cpuPerformanceCounter.NextValue() / Environment.ProcessorCount; // Exception } …我得到一个exception实例“实例的名称”在指定的类别中不存在,并且不理解原因。 PS代码 …包含在App.config中。

列出类别的所有性能计数器

System.Diagnostics中是否有内置方法用于检索给定CategoryName的所有实例化性能计数器? 我们有许多使用自定义性能计数器的multithreading应用程序,现在需要添加一个仪表板来显示性能统计信息。 我想以这样一种方式制作仪表板,即只要有人在新代码中添加新计数器,就不需要更新它。

如何在代码中访问C#性能计数器?

我想在我的程序中使用性能计数器输出。 如何在不使用perfmon.exe的情况下访问代码中的性能计数器。 我想创建自己的性能计数器应用程序。

如何监控特定应用程序的网络带宽使用情况?

我正在尝试学习如何监视特定应用程序的网络带宽使用情况。 我正在看IPv4InterfaceStatistics ,但这似乎监控了NIC卡的性能。 我想监视一个特定的应用程序,看看每秒消耗多少带宽。 有谁知道如何做到这一点的例子?