在计算机系统中,性能监控是一个重要的环节,它可以帮助了解系统的运行状态,并及时发现和解决性能瓶颈。在.NET环境中,可以通过创建自定义的性能计数器来监控应用程序的性能。性能计数器可以是硬件组件,如处理器、磁盘和内存,也可以是系统对象,如进程和线程。此外,.NET公共语言运行时环境还创建并维护了大量的性能计数器,例如垃圾回收所花费的时间百分比和托管堆的总大小等。
可以通过运行perfmon.exe工具来监控系统行为。这个工具提供了一个用户界面,允许选择感兴趣的性能计数器,并将它们以图表的形式展示出来。
.NET框架提供了两个类,PerformanceCounterCategory和PerformanceCounter,可以使用这两个类与性能监视器进行交互。通过这些类,可以创建自定义的性能计数器来监控应用程序的各个方面,从而保持对其性能的关注。
附加库中包含了两个派生的属性类,PerformanceCounterCategoryAttribute和PerformanceCounterAttribute,可以使用这些属性来装饰业务对象类,然后使用PerformanceCounterUtilities类中的共享函数来创建和更新这些性能计数器。
要将一个类与特定的性能计数器类别关联,需要使用PerformanceCounterCategoryAttribute属性来装饰该类定义。
' VB
_
Public Class PerformanceCounterTestClass
要将类的公共属性与特定的性能计数器关联,需要使用PerformanceCounterAttribute属性来装饰该属性定义。
' VB
_
Public ReadOnly Property CurrentList() As Collection
PerformanceCounterAttribute属性有重载的构造函数,允许指定性能计数器的类型(如果没有特别选择,将默认使用PerformanceCounterType.NumberOfItems32)。对于那些需要关联基础性能计数器的性能计数器类型(例如,RawFraction计数器类型需要关联Rawbase计数器类型),可以指定提供基础性能类别的属性名称。
在可以为各种性能计数器分配值之前,需要先创建它们。为此,需要将类实例(具有属性的类)传递给RebuildPerformanceCounterCategory方法。这将创建一组CounterCreationData对象,并按照创建该对象类型的性能计数器所需的正确顺序放置它们。
' VB
Private TestClass As New PerformanceCounterTestClass
' Create and register the performance counter categories
PerformanceCounterUtilities.RebuildPerformanceCounterCategory(TestClass)
要更新与类关联的所有性能计数器,可以调用UpdatePerformanceCounter方法并传递类实例。
' VB
PerformanceCounterUtilities.UpdatePerformanceCounter(TestClass)
' VB
PerformanceCounterUtilities.UpdatePerformanceCounter(TestClass, "Iterations")