标签: performancecounter

你如何获得计算机的RAM总量?

使用C#,我想获得我的计算机拥有的RAM总量.使用PerformanceCounter,我可以通过设置获得可用ram的数量:

counter.CategoryName = "Memory";
counter.Countername = "Available MBytes";
Run Code Online (Sandbox Code Playgroud)

但我似乎无法找到获得总内存量的方法.我该怎么做呢?

更新:

MagicKat:我在搜索时看到了它,但它不起作用 - "你错过了一个装配或参考吗?".我希望将它添加到参考文献中,但我没有在那里看到它.

c# memory performancecounter

78
推荐指数
10
解决办法
12万
查看次数

获取进程的CPU和内存使用情况的正确性能计数器是什么?

如何使用.NET 类获取特定进程的CPU内存使用情况PerformanceCounter?还有什么区别

Processor\% Processor TimeProcess\% Processor Time

我对这两者感到有些困惑.

c# memory-management performancecounter cpu-usage

64
推荐指数
1
解决办法
11万
查看次数

性能计数器的性能如何?

当考虑使用性能计数器作为我公司的基于.NET的站点时,我想知道使用它们的开销有多大.

我想让我的网站不断更新它的计数器,还是我最好只做我测量的时候?

performance performancecounter

43
推荐指数
4
解决办法
1万
查看次数

C#以%为单位获取已用内存

我已经创建了一个性能计数器,它可以检查%的总内存使用量,但问题是它没有给我与任务管理器显示的相同的值.例如:我的程序说34%,但任务经理说40%.

有任何想法吗?

注意
我尝试获取系统的可用RAM,而不是进程使用的RAM.

现行守则

private PerformanceCounter performanceCounterRAM = new PerformanceCounter();

performanceCounterRAM.CounterName = "% Committed Bytes In Use";
performanceCounterRAM.CategoryName = "Memory";

progressBarRAM.Value = (int)(performanceCounterRAM.NextValue());
            labelRAM.Text = "RAM: " + progressBarRAM.Value.ToString(CultureInfo.InvariantCulture) + "%";
Run Code Online (Sandbox Code Playgroud)

编辑
我用计时器每秒刷新进度条和标签.

c# performancecounter

41
推荐指数
3
解决办法
5万
查看次数

C#程序可以以某种方式测量自己的CPU使用率吗?

我正在开发一个将运行很长时间的后台程序,我有一个外部日志记录程序(SmartInspect),我希望定期提供一些值,以便在调试时实时监控它.

我知道我可以简单地启动多个程序,比如任务管理器或IARSN TaskInfo,但是我想在我自己的程序中保留所有内容,因为我还想添加一些简单的规则,比如程序使用的多于X%CPU,在日志中标记它.

我有一个后台线程,定期向SmartInspect提供一些统计信息,如内存消耗,工作集等.

这个线程是否有可能合理准确地衡量它消耗的计算机CPU资源量?主程序是单线程应用程序(除了记录统计信息的监视程序线程),因此如果一种技术仅限于单个线程使用多少,那么这也是好的.

我找到了一些与Linux和C的rusage相关的条目.我可以使用类似的东西吗?


编辑:好的,我尝试了性能计数器方式,但每次调用时都添加了大量的GC数据,因此内存使用和垃圾收集的图表飙升.我想我现在就把这部分留下来.

c# cpu monitoring performancecounter

39
推荐指数
2
解决办法
3万
查看次数

什么会使PerformanceCounterCategory.Exists无限期挂起?

我有一个使用性能计数器的应用程序,已经工作了几个月.现在,在我的开发机器和另一台开发人员机器上,当我调用PerformanceCounterCategory.Exists时它已经开始挂起.据我所知,它无限期地挂起.我使用哪个类别作为输入并不重要,使用API​​的其他应用程序表现出相同的行为.

调试(使用MS Symbol Servers)显示它是对挂起的Microsoft.Win32.RegistryKey的调用.进一步的调查表明,这条线是挂起的:

while (Win32Native.ERROR_MORE_DATA == (r = Win32Native.RegQueryValueEx(hkey, name, null, ref type, blob, ref sizeInput))) { 
Run Code Online (Sandbox Code Playgroud)

这基本上是一个尝试为性能计数器数据分配足够内存的循环.它开始于size = 65000并进行一些迭代.在第4次通话中size = 520000,Win32Native.RegQueryValueEx挂起时.

此外,相当令人担忧的是,我在PerformanceCounterLib.GetData的参考源中找到了这条评论:

    // Win32 RegQueryValueEx for perf data could deadlock (for a Mutex) up to 2mins in some 
    // scenarios before they detect it and exit gracefully. In the mean time, ERROR_BUSY,
    // ERROR_NOT_READY etc can be seen by other concurrent calls (which is the reason for the 
    // wait loop and …
Run Code Online (Sandbox Code Playgroud)

.net c# debugging performancecounter

39
推荐指数
1
解决办法
4778
查看次数

请求的性能计数器不是自定义计数器,必须初始化为ReadOnly

每当我尝试调试.NET Windows服务应用程序时,我都会在性能计数器上反复出现有关ReadOnly属性的错误.这个应用程序在x86 windows vista或x86 windows 2003上运行正常.它刚刚停止在我的新64位开发机上工作.

我在管理员模式下在64位和32位命令行VCVARS.bat上运行相关的InstallUtil调用.我没有设置类别和每个perf计数器的错误.但是,无论我是否将perf ctrs设置为readonly,我都会得到:

请求的性能计数器不是自定义计数器,必须初始化为ReadOnly.

UPDATE

我用32位版本的Windows 7重新安装了这台机器,奇怪的是我仍然遇到这个错误.唯一改变的是从Windows Vista Business迁移到Windows 7 Professional.这会响铃吗?

.net performancecounter .net-3.5 windows-7

37
推荐指数
2
解决办法
4万
查看次数

"访问性能计数器时,访问注册表项'全局'被拒绝"

我试图从我的ASP.NET应用程序中读取一些性能计数器.当我这样做时,我收到错误"访问注册表项'全局'被拒绝."

我已尝试按照此处此处的说明使用用户IIS AppPool\DefaultAppPool,这是我的应用程序池配置使用的标识:

App Pool配置的屏幕截图

我已将该用户添加到Performance Monitor Users组:

在此输入图像描述

添加用户后,我重新启动了计算机.但我仍然得到错误.

我还尝试将用户IUSR和NETWORK SERVICE添加到性能监视器用户组,但这些也不起作用.出于绝望,我尝试将用户"Everyone"添加到Performance Monitor Users组,这实际上确实有效.但我的目标是在生产中记录我的应用程序中的统计信息,并且我不想在生产服务器上向该组添加"Everyone".

在不产生安全性异常的情况下读取性能计数器还需要做些什么?

asp.net iis performancecounter iis-7.5

37
推荐指数
1
解决办法
4万
查看次数

.NET 4.0和Windows 7上的PerformanceCounters

我有一个在VS2008和Vista上运行良好的程序,但我在Windows 7和VS2010/.NET Framework 4.0上尝试它并且它无法正常工作.最终问题是System.Diagnostics.PerformanceCounterCategory.GetCategories()(以及其他PerformanceCounterCategory方法)无法正常工作.我收到一个System.InvalidOperationException,并显示消息"无法加载计数器名称数据,因为从注册表中读取了无效的索引".

我可以使用下面显示的非常简单的程序重现这个:

class Program
{
    static void Main(string[] args)
    {
        foreach (var pc in System.Diagnostics.PerformanceCounterCategory.GetCategories())
        {
            Console.WriteLine(pc.CategoryName);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我确实确保我以管理员身份运行该程序.如果我使用附加的VS/Debugger运行它并不重要.我没有其他机器用Windows 7或VS2010来测试它,所以我不确定哪个复杂的东西(或两者兼而有之?).它是Windows 7 x64,我试图强制该应用程序在x32和x64中运行,但得到相同的结果.

c# performancecounter .net-4.0 windows-7

33
推荐指数
1
解决办法
2万
查看次数

如何在ASP.net应用程序中检测SqlServer连接泄漏?

我目前正在ASP.net 2.0应用程序上进行一些GUI测试.RDBMS是SQL Server 2005.主机是Win Server 2003/IIS 6.0.

我没有应用程序的源代码,因为它是由一个没有发布代码的外部公司编写的.

我注意到当我重新启动IIS时应用程序运行良好但经过一些测试后,在我打开并关闭浏览器几个小时之后,应用程序开始变得越来越慢.我想知道这种行为是否是由于程序员关闭连接错误造成的:我怀疑这里的数据库是否存在开放连接泄漏.

我想.Net垃圾收集器最终将关闭它们但是......这可能需要一段时间,不是吗?

我有SQL Server Management Studio,我从活动监视器中注意到数据库上打开了很多连接.

从以上所述,以下是与主要问题相关的一些问题:

  1. 有没有办法在SQL Server 2005中知道连接是否打开是因为它们等待在连接池中使用,或者它们是否因为应用程序使用它们而打开?

  2. somone是否知道良好的在线/纸质资源,我可以学习如何使用性能计数器或其他类型的工具来帮助追踪这类问题?

  3. 如果性能计数器是最佳解决方案,那么我应该注意哪些变量?

sql-server asp.net connection-pooling performancecounter connection-leaks

32
推荐指数
3
解决办法
3万
查看次数