如何创建和使用 System.Diagnostics.PerformanceData.CounterSet?
How do I create and use System.Diagnostics.PerformanceData.CounterSet?
我在使用 PerformanceCounterCategory.Create
方法创建的 .NET 应用程序中获得了性能计数器,并传入 CounterCreationDataCollection
.
我刚刚玩过 Powershell 的 Get-Counter
命令,它带有一个 -ListSet
参数。如果你执行:
Get-Counter -ListSet * | select countersetname | sort countersetname
您将看到一个与您在 perfmon.exe 的可用计数器类别列表中看到的非常相似的列表。
问题是上面的命令没有返回我的类别。
显然"counter category"和"counter set"是不同的概念。我能在 .NET 中找到的最接近的是 System.Diagnostics.PerformanceData.CounterSet。问题是没有关于如何创建这些 "counter sets".
的好的文档或示例
CounterSet
是我需要的东西吗?我该如何使用它?
原来这是我的 Powershell 会话的(未诊断的)异常。当我在我的 Powershell ISE(非管理员)中 运行 时,我收到以下错误:
> Get-Counter -ListSet MyCategory
Get-Counter : Cannot find any performance counter sets on the localhost computer that match the following: MyCategory.
At line:1 char:1
+ Get-Counter -ListSet MyCategory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (:) [Get-Counter], Exception
+ FullyQualifiedErrorId : NoMatchingCounterSetsFound,Microsoft.PowerShell.Commands.GetCounterCommand
奇怪地尝试按名称直接检索计数器会出现此错误:
>Get-Counter -Counter "\MyCategory\MyCounter"
Get-Counter : Internal performance counter API call failed. Error: c0000bb8.
At line:1 char:1
+ Get-Counter -Counter "\MyCategory\MyCounter"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidResult: (:) [Get-Counter], Exception
+ FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand
但是...当我 运行 在新的 Powershell 会话中(即使是非管理员)它工作得很好。
所以在回答我的问题时:PerformanceCounterCategory 和 "counter set" 似乎是同一回事。
我在使用 PerformanceCounterCategory.Create
方法创建的 .NET 应用程序中获得了性能计数器,并传入 CounterCreationDataCollection
.
我刚刚玩过 Powershell 的 Get-Counter
命令,它带有一个 -ListSet
参数。如果你执行:
Get-Counter -ListSet * | select countersetname | sort countersetname
您将看到一个与您在 perfmon.exe 的可用计数器类别列表中看到的非常相似的列表。
问题是上面的命令没有返回我的类别。
显然"counter category"和"counter set"是不同的概念。我能在 .NET 中找到的最接近的是 System.Diagnostics.PerformanceData.CounterSet。问题是没有关于如何创建这些 "counter sets".
的好的文档或示例CounterSet
是我需要的东西吗?我该如何使用它?
原来这是我的 Powershell 会话的(未诊断的)异常。当我在我的 Powershell ISE(非管理员)中 运行 时,我收到以下错误:
> Get-Counter -ListSet MyCategory
Get-Counter : Cannot find any performance counter sets on the localhost computer that match the following: MyCategory.
At line:1 char:1
+ Get-Counter -ListSet MyCategory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (:) [Get-Counter], Exception
+ FullyQualifiedErrorId : NoMatchingCounterSetsFound,Microsoft.PowerShell.Commands.GetCounterCommand
奇怪地尝试按名称直接检索计数器会出现此错误:
>Get-Counter -Counter "\MyCategory\MyCounter"
Get-Counter : Internal performance counter API call failed. Error: c0000bb8.
At line:1 char:1
+ Get-Counter -Counter "\MyCategory\MyCounter"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidResult: (:) [Get-Counter], Exception
+ FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand
但是...当我 运行 在新的 Powershell 会话中(即使是非管理员)它工作得很好。
所以在回答我的问题时:PerformanceCounterCategory 和 "counter set" 似乎是同一回事。