标签: performancecounter

在Visual C++中创建自定义性能计数器

有没有人知道使用普通的非托管Visual C++创建自定义性能计数器的方法?

我知道可以使用托管C++轻松完成,但我需要使用非托管Windows服务.

我也知道您可以检索性能计数器数据,但我需要创建一些自定义计数器并在应用程序运行时期间递增它们.

c++ performancecounter visual-c++

5
推荐指数
2
解决办法
8740
查看次数

在appdomain recyclyes上使用自定义性能计数器

我有一个ASP.NET应用程序,它通过创建和写入自定义性能计数器来跟踪统计信息.有时,我会在错误日志中看到指示计数器无法打开,因为它们已在当前进程中使用过.我认为这是由于我的.NET appdomain已在同一个w3wp.exe进程中重置.当我的应用程序域被回收时,如何避免这些错误并重新建立与性能计数器的连接?

柜台建设:

PerformanceCounter pc = new PerformanceCounter();
pc.CategoryName = category_name;
pc.CounterName = counter_name;
pc.ReadOnly = false;
pc.InstanceLifetime =
PerformanceCounterInstanceLifetime.Process;
pc.InstanceName = instance_name;
Run Code Online (Sandbox Code Playgroud)

柜台使用:

pc.Increment()
Run Code Online (Sandbox Code Playgroud)

[2009年3月26日更新]收到的错误消息是:

实例'_lm_w3svc_1_root_myapp'已存在,其生命周期为Process.在删除它或使用它的进程退出之前,它不能重新创建或重用.已存在具有生命周期的过程.

我尝试通过初始化性能计数器并在瞬态AppDomain中写入其中一个来复制控制台应用程序中的异常.然后我卸载AppDomain并在第二个Appdomain中再次执行(相同的过程).他们都成功了.我现在不确定究竟是什么原因,我对ASP.NET中AppDomain回收的假设似乎是错误的.

.net asp.net performancecounter appdomain

5
推荐指数
2
解决办法
4025
查看次数

QueryPerformanceCounter和线程安全

我正在考虑在两个同时处于活动状态的线程中对QueryPerformanceCounter进行重复调用(旋转).我不确定这是否真的是一个问题,因为我没有看到任何关于它的文章,但是QueryPerformanceCounter线程安全吗?

谢谢

windows multithreading performancecounter

5
推荐指数
1
解决办法
3648
查看次数

如何以编程方式记录PerformanceCounter

我了解使用Perfmon.msc您可以创建自定义性能计数器并使用计数器日志,您可以将计数器值写入文本文件.

我也理解我也可以通过使用创建性能计数器以编程方式使用它System.Diagnostics.PerformanceCounter,并使用NextValue()方法获取计数器值.是否有一种程序化的方法来告诉PerformanceCounter对象将日志写入文本文件(类似于Counter Log in perfmon.msc)?

.net c# logging perfmon performancecounter

5
推荐指数
1
解决办法
2690
查看次数

使用具有不同UI语言的性能计数器

我想在我的C#应用​​程序中阅读一些性能计数器,例如"Processor \%Idle Time",但这仅适用于英语系统.由于需要使用计数器类别和名称初始化性能计数器,如何使我的代码在不同的UI语言下运行?

c# performancecounter

5
推荐指数
1
解决办法
837
查看次数

在运行时唯一标识对象的选项?

我需要在运行时将唯一标识符附加到对象.标识符在应用程序期间必须是唯一的.我计划在我的对象模型的基类中有一个私有成员变量.此变量将在对象初始化时设置,并且该值将在对象的生命周期内保持不变.在应用程序的持续时间内,没有其他对象可以具有相同的标识符.

当然,我可以使用System.Guid,但每个对象需要128位存储空间,而且我希望消耗更少的资源.我尝试使用Int32并使用System.Environment.TickCount属性对其进行初始化,但是我得不到足够的分辨率,并且某些对象最终会分配相同的值.

TickCounter的文档说,TickCount属性将在~29之后滚动到负值,然后在另外29天内回到零.随着时间的推移,我会很乐意交换更多的分辨率.

我还有其他我不了解的选择吗?

c# performancecounter

5
推荐指数
2
解决办法
3155
查看次数

读取和解析perf.data

我正在使用命令perf record来记录性能计数器frm linux。

我想将结果perf.data用作其他编程应用程序的输入。您知道如何读取和解析其中的数据perf.data吗?有没有办法将其转换为.text文件或.csv

linux performance parsing profiling performancecounter

5
推荐指数
2
解决办法
1099
查看次数

当ReadOnly = false时,性能计数器显示不同的值

我试图找出为什么某些性能计数器没有在我们的生产服务器中更新,当我遇到这个奇怪的问题时 - 计数器似乎在RawValue不是只读时返回不同的值.只读时它始终为零,当不是只读时,它显示不同的值.

这是我的PowerShell会话显示:

PS C:\Users\doron> $counter = new-object Diagnostics.PerformanceCounter
PS C:\Users\doron> $counter.CategoryName = "My category"
PS C:\Users\doron> $counter.CounterName = "My counter name"
PS C:\Users\doron> $counter.ReadOnly = 1
PS C:\Users\doron> $counter


CategoryName     : My category
CounterHelp      : My counter name
CounterName      : My counter name
CounterType      : NumberOfItems64
InstanceLifetime : Global
InstanceName     :
ReadOnly         : True
MachineName      : .
RawValue         : 0
Site             :
Container        :



PS C:\Users\doron> $counter.ReadOnly = 0
PS C:\Users\doron> $counter


CategoryName     : My category …
Run Code Online (Sandbox Code Playgroud)

.net windows powershell performancecounter

5
推荐指数
1
解决办法
996
查看次数

RawValue或NextValue

我有一个非常简单的问题,我认为以前已经回答过,但是我只是找不到与我要寻找的内容完全相同且简单的参考。

我有一个控制台实用程序应用程序,该应用程序根据每个输入参数获取每个Web应用程序或Windows服务的性能计数器列表。

我的简单问题是:应该使用NextValue读取哪些计数器,使用RawValue读取哪些计数器?

由于我的实用程序需要快速运行(不到2秒),因此我想高效地读取每个计数器。例如,我知道必须通过NextValue读取Process /%Processor Time,而可以通过RawValue读取Process / Working Set。

我试图让我的应用程序根据PerfCounterType(NumberItems32,CounterXXX等)来决定,该方法可以正常工作,但是我只需要有关如何读取它们的确切简单直接信息。

我的早期结论似乎是必须通过NextValue读取所有内容,以提高准确性,但是由于经验是某些人可以执行RawValue,因此最好通过第二次读取并避免需要1秒钟的睡眠。

这是潜在的计数器列表,我获得了Type:

# Bytes in all Heaps = NumberOfItems32
# Gen 0 Collections = NumberOfItems32
# Gen 1 Collections = NumberOfItems32
# Gen 2 Collections = NumberOfItems32
# Induced GC = NumberOfItems32
# of current logical Threads = NumberOfItems32
# of current physical Threads = NumberOfItems32
# of Exceps Thrown / sec = RateOfCountsPerSecond32
# of Exceps Thrown = NumberOfItems32
# of marshalling = NumberOfItems32
# of Sink Blocks in …
Run Code Online (Sandbox Code Playgroud)

c# asp.net instrumentation performancecounter

5
推荐指数
0
解决办法
852
查看次数

CPU使用率与任务管理器,PerformanceCounter或ManagementObjectSearcher不匹配

我只是想获得与任务管理器匹配的准确CPU使用率.到目前为止,我已经尝试了四种不起作用的推荐方法.

首先,我尝试了类似的解决方案或建议,我可以找到.这里的代码示例使用四种方法,所有方法都不准确.其次,我知道任务管理器会波动并取决于它何时被采样.这仍然没有考虑到差异.最后,我知道有不同的方法,任务管理器只使用一种方法.由于这适用于一般用户,因此需要靠近任务管理器.

public partial class MainWindow : Window
{
    //*** Method 1 & 2
    PerformanceCounter cpuCounterPi = new PerformanceCounter("Processor Information", "% Processor Time", "_Total");
    PerformanceCounter cpuCounterP = new PerformanceCounter("Processor", "% Processor Time", "_Total");

    //*** method 3
    ManagementObjectSearcher query1 = new ManagementObjectSearcher("select loadpercentage from win32_processor");

    //*** Mixed method usage below
    CounterSample csPi1, csPi2, csP1, csP2;
    double cpuPercentagePi, cpuPercentageP, cpuPercentageLoad;
    int count = -1;
    Boolean alternate = false;

    System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();

    public MainWindow()
    {
        InitializeComponent();

        dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
        dispatcherTimer.Interval …
Run Code Online (Sandbox Code Playgroud)

c# performancecounter cpu-usage

5
推荐指数
1
解决办法
1050
查看次数