利用Windows性能计数器(PerformanceCounter)监控

一、概述

性能监视,是Windows NT提供的一种系统功能。Windows NT一直以来总是集成了性能监视工具,它提供有关操作系统当前运行状况的信息,针对各种对象提供了数百个性能计数器。性能对象,就是被监视的对象,典型例子有Processor、Process、Memory、TCP/UDP/IP/ICMP、PhysicalDisk等。计数器通常提供操作系统、应用程序、服务、驱动程序等的性能相关信息,以此来分析系统瓶颈和对系统及应用程序性能进行诊断和调优。性能计数器机制让应用程序和操作系统组件可以向性能监视应用程序,比如性能监视器(Performance Monitor),报告一些与性能有关的统计信息。PerfMon.exe中可以查看性能对象、性能计数器和对象实例,可通过添加计数器来查看相关描述信息。

实际上,可以通过编写程序来访问所有的Windows性能计数器。Windows中,注册表是访问性能计数器的一种机制。性能信息并不实际存在于注册表中,在注册表编辑器RegEdit.exe中是无法查看的,但可以通过注册表函数来访问,利用注册表键来获得从性能数据提供者那里提供的数据。打开名为HKEY_PERFORMANCE_DATA的特殊键,利用RegQueryValueEx函数查询键下面的值,就可以直接访问注册表性能计数器信息。当然,也可以利用性能数据帮助器(PDH, Performance Data Helper) API (Pdh.dll)来访问性能计数器信息。

性能日志和警报是作为 Windows 操作系统的一部分发行的一种管理性能监控工具。它依靠由各种 Windows 组件、子系统和应用程序发布的性能计数器,使您可以跟踪资源使用情况以及针对时间以图形方式绘制它们。您可以使用 Performance Logs and Alerts 来监控标准的性能计数器(例如,内存使用情况或处理器使用情况),或者您可以定义您自己的自定义计数器来监控应用程序特定的活动。

二、HKEY_PERFORMANCE_DATA数据组织

性能数据的头部是一个PERF_DATA_BLOCK结构(如图1所示),它描述系统和性能数据总体信息,可从Global键值处查询得到该结构数据。PERF_DATA_BLOCK之后,定义了系统中的全部性能对象类型(PERF_OBJECT_TYPE),其中每个对象类型头部中描述了下一个性能对象类型的偏移量Offset。

 图1 图2

性能对象有两种:一种是单实例对象,另一种是多实例对象。图2和图3分别描述了这两种性能对象的数据组织方式。每个对象数据块包含了一个PERF_OBJECT_TYPE结构,描述对象的性能数据。紧随其后是PERF_COUNTER_DEFINITION结构列表,描述了性能对象的全部计数器定义。对于单实例对象,计数器定义列表后是一个PERF_COUNTER_BLOCK结构,计数器数据紧随其后。每个PERF_COUNTER_DEFINITION结构中定义了计数器数据相对于PERF_COUNTER_BLOCK的偏移量,因此可以非常方便地获得全部计数器的值。对支持多实例性能对象来说,PERF_COUNTER_DEFINITION结构列表之后是一组实例信息数据块,每个表示代表一个对象实例。每个实例信息数据块由一个PERF_INSTANCE_DEFINITION结构体、实例名和一个PERF_COUNTER_BLOCK结构体组成。后面是计数器值数据,与单实例对象相同。

图3

三、性能计数器的架构

性能计数器采用的是客户端服务器结构,性能数据采用共享内存存储,在应用中自定义性能计数器,在应用程序调用的时候调用性能计数器进行计数。体系结构如下:

性能计数器可以获得应用程序性能的实时度量数据,而不需要通过记日志,进行另外的处理。而且性能计数器可以远程查看,可以通过管理工具(MOM)进行管理。在损耗上也非常的小。

四、.NET性能计数器实现

在.NET Framework下有个程序集

(C:WINDOWSMicrosoft.NETFrameworkv2.0.50727perfcounter.dll)实现了性能计数器功能,包括性能计数器的安装/卸载,值的读写。

在命名空间System.Diagnostic提供了一组性能计数器类,包括PerformanceCounterCategory,PerformanceCounter,PerformanceCounterInstaller,CouterSample等等。

在.NET中性能计数器有良好的抽象封装,实现起来比C/C++容易得多。我们在应用经常只关注一些请求类型的数据度量,例如下述:

Requests Started

Requests Executing

Requests Completed

Requests Failed

Request Execution Time

Requests/Hour

Requests/5Min

Requests/Min

Requests/Sec

但是真正需要做这些性能计数器的安装/卸载,计数,读取还是需要大量的代码,通过封装来简化编程接口。对于使用WCF来实现的服务,可以基于WCF的扩展性,进行进一步的封装。

 

时间: 2024-08-31 21:23:04

利用Windows性能计数器(PerformanceCounter)监控的相关文章

利用windows性能计数器进行服务器性能监控

using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Threading; using System.Management; using System.Runtime.InteropServices; using System.Data; using System.Data.SqlClient; using System.Directory

如何利用Windows Server Backup备份数据进行域控裸机还原

在<利用Windows Server Backup功能备份活动目录 >一文中我讲解了如何进利用Windows Server Backup功能来对域控进行备份,在本次的博文中,我们就一起来看看如何还原之前利用Windows Server Backup备份的域控信息来进行裸机还原操作: 操作步骤可参考如下: 1) 开机加载Windows Server 2008 R2 SP1光盘至服务器光驱,从光盘启动: 2) 在下图所示页面中,单击"下一步"按钮: 3) 在下图所示页面中,选择

利用Windows 7权限,间接提升系统安全性。

在Windows XP系统下,用户在限制USB设备使用方面,首先考虑的就是禁止其自动播放,以避免木马病毒入侵.但很多时候,这样的方法并不是很有效.如果你是Windows 7用户,那就可以通过它独有的"权限控制"技术,从源头上控制USB设备的自动运行. 那么,怎样才能从源头控制呢? 大家应该都知道,当USB设备插入电脑主机,稍后一会,系统将会提示XX设备已经可以使用,这个过程其实就是系统识别,并为USB设备安装驱动的过程.我们可以利用Windows 7特有的权限控制功能,禁止它自动识别并

vc++6 0-用vc++6.0 利用windows media player控件制作播放器时

问题描述 用vc++6.0 利用windows media player控件制作播放器时 在win7 64位环境下 要对 播放器进行暂停 快进等操作时 调用 CWMPcontrols 函数时 显示 'CWMPcontrols.h': No such file or directory 头文件 也加了 cwmpcontrols.h 头文件换成小写也是不行的 也说不能打开 没有这个文件 cwmpcontrols.h 头文件是存在的在工程目录下: 解决方案 你的VC++版本太旧,没有这个头文件.建议你

网络间谍小组利用Windows热补丁实现恶意软件隐身

本文讲的是网络间谍小组利用Windows热补丁实现恶意软件隐身,在亚洲活动的一个网络间谍小组正使用被称为"热补丁"(Hotpatching)的Windows即时更新特性,使恶意软件更难被安全产品发现. 来自微软的恶意软件研究人员将这一小组称为Platinum,它自2009年开始活动,其目标主要是南亚和东南亚国家的政府机构.国防组织.情报单位和通讯运营商.马来西亚.印度尼西亚和中国受害最为严重. 目前为止,该小组的主要攻击方式是鱼叉式钓鱼:针对特定组织或个人,定制化伪造电子邮件.此手段通

如何利用windows服务定时访问一个页面

问题描述 如题.我想每天早上固定一个时间自动打开某一个页面.如何实现. 解决方案 解决方案二:是想写一个windows服务,还是利用windows任务计划?要是写windows服务,应该先设计一个数据库,把固定的执行时间写进去,然后加一个timer,让它隔几秒就读一次,当执行时间到了,就做两步工作:1.执行打开网页(具体代码可以去google一下)2.把数据库中的执行时间自动加一天解决方案三:大哥,如果用windows服务怎么做啊,麻烦能讲的具体点吗?谢谢了.真的急.救命的.解决方案四:wind

伦敦警方被爆利用印度黑客非法监控政治人士及记者邮件

"警匪'合作'监控政治活动人士及记者邮箱!"据英国<卫报>21日报道,神秘人士匿名检举揭发,伦敦警察情报部门利用印度黑客非法监控数百人的电子邮件. 报道称,伦敦警察情报部门跟印度情报警察"合作",通过后者找到印度黑客来获取被监控对象的电子邮件密码.检举信还透露,在面临可能遭调查的情况下,涉事警官大肆销毁有关文件,企图掩盖非法监控的事实. <卫报>透露的检举材料显示,被监控对象中包括倡导环保运动的绿色和平组织成员以及可能参与社会运动报道的&qu

APT团伙是如何利用Windows热修复的?

高级持续性威胁(APT)团伙Platinum一直滥用Windows的热修复功能来攻击南亚和东南亚的政府组织和机构.这个APT团伙利用这个功能(Windows Server 2003中推出)将恶意代码注入到正在运行的进程中.那么,这些热修复攻击的工作原理是什么,我们应该如何应对? Nick Lewis:高级持续性威胁(APT)团伙历来喜欢利用零日漏洞和内置工具作为其攻击手段.热修复是Windows 2003中推出的安全功能之一.Windows Defender高级威胁狩猎队检测到名为Platinu

利用Windows 7文件库收藏重要文件

大部分人的工作应该跟笔者一样,每天的工作都有很大的相关性,在XP时代,我们大多是根据当前工作的需要建立相关的文件夹,然后按照我们的习惯进行细化区分.但随着文件数量和种类的增多,再加上工作需要和使用习惯的不确定性,文件变得越来越混乱,文件夹结构越来越复杂,重复文件也越来越多,而真正要用到某个文件时却怎么也找不到了.而现在到了Win7系统时代能不能解决我们这方面的困扰呢?答案当然是肯定的,只要利用Windows7的文件库功能轻松就能应对. 简单地讲,Windows 7文件库就是能将我们需要的文件和文