对象和计数器设计
性能对象是一个可用的性能数据的实体。 性能计数器定义可用于性能对象的数据类型。 应用程序可以为多个性能对象提供信息。 性能对象可以包含单个实例计数器或多个实例计数器。 单个实例对象返回一组计数器值。
多个实例对象针对应用程序控制的对象的每个匹配项返回对象的实例。 例如,SCSI 应用程序可以定义具有两个计数器的驱动器对象,例如字节读取和写入的字节数。 当使用者查询对象时,性能 DLL 会返回应用程序控制的每个驱动器的对象实例。
确定对象是否支持单个实例或多个实例后,需要确定希望对象提供的计数器类型。 例如,可以提供显示为原始值、速率或百分比的计数器值。
有关应从中选择的预定义计数器类型的列表,请参阅 Windows Server 2003 部署工具包的“计数器类型”部分。 根据计数器类型,可能只是提供原始数据,或者还必须提供时间和频率信息以及使用者用来计算可显示值的附加计数器数据。
用于收集数据的方法可以像每次调用应用程序中特定例程时递增计数器一样简单,也可以涉及耗时的计算。 计数器和计时器应递增,永远不会清除。 只要计数器在使用者采样之间不包装两次,计数器就可以包装。 只要应用程序不影响其性能,应用程序就可以在正常执行期间收集和存储数据。
对于某些类型的数据,可能需要更高效或更适合按需收集数据。 在这种情况下,性能 DLL 必须与请求数据的应用程序通信。 对于在处理器时间或内存使用) 方面收集 (成本高昂的数据,请考虑仅在使用者请求 成本高昂 的数据时收集数据。 这样,使用者就可以定期请求成本不高的所有计数器的数据。 仅当需要时,才能请求数据。 性能工具不会收集 成本高昂 的数据。