利用Windows性能计数器,Windows系统资源监控

  • 1、windows自带系统财富监察和控制工具
  • 2、Windows监察和控制的数码来源于:Performance
    Counters

    • 2.1 Performance
      Counter架构
    • 2.2 Performance
      Counter数据结构
    • 2.3 消费Performance
      Counter数据
  • 3、使用基于PDH的python客商端

一、概述

 

天性监视,是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)来寻访质量计数器新闻。

1、Windows自带系统能源监察和控制工具

我们都明白,Windows自带有系统资源监视器。重要有3个地点:

1)
Windows的天职管理器的属性页签,包罗了CPU,内部存款和储蓄器,磁盘,网络等系统财富的监督检查。它根本监督检查系统能源的一体化使用情状,使用它,我们能够发现是或不是有财富完结瓶颈了之类。

 图片 1

 

2) Windows财富监视器

其一工具得以观望系统能源到底是由什么进度消耗的。通过它,能够急速查看见到底如何进度占用了您的系统能源。

 图片 2

3) 品质监视器

前二种工具已经提供你要监督的大许多职能,在有些景况下,恐怕照样不可能定位难点,那时候就要求你更上一层楼的问询系统的运转情形。那么那几个工具正是四个没有错的抉择。

 图片 3

 

性格日志和警报是作为 Windows
操作系统的一有的批发的一种管理品质监察和控制工具。它依附由各样 Windows
组件、子系统和应用程序宣布的性质计数器,让你可以追踪能源选择状态以及针对性时间以图表情势绘制它们。您能够动用
Performance Logs and Alerts
来监督规范的属性计数器(比如,内部存款和储蓄器使用处境或微型Computer使用状态),大概你能够定义您自个儿的自定义计数器来监督应用程序特定的移动。

2、Windows 监察和控制的多寡来自:Performance Counters

      
Windows的这一个监察和控制工具之所以能够显示这一个能源的意况,它们的数额出自都以二个叫Performance
Counter的东东。

 

二、HKEY_PERFORMANCE_DATA数据协会

2.1 PerformanceCounter 架构

PerformanceCounter架构如下:

 图片 4

 

 

应用了Producer / Consumer 架构,扶助八种顾客端从Registry花费数量。

上海教室中,A 使用Registry接口来费用数量,而B 和 Performance
Monitor三个顾客端则应用了pdh.dll来花费数据。

 

 

 

特性数据的头顶是一个PE福睿斯F_DATA_BLOCK结构(如图1所示),它汇报系统和总体性数据全部音讯,可从Global键值处查询获得该协会数据。PE冠道F_DATA_BLOCK之后,定义了系统中的全体属性对象类型(PE奥德赛F_OBJECT_TYPE),个中每一种对象类型尾部中陈诉了下三个属性对象类型的偏移量Offset。

2.2 Performance Counter 数据结构

若是你想用程序来开销Counter的数码,不论采用哪个种类API来开支数量,不论选用哪一种工具来费用数据,都亟待了然Performance
Counter的园地语言,也正是说要了然它在这之中的多寡是何等组织的。

 

它的基本概念如下:

Machine:机器,这个没什么好说的,支持消费本机的监控数据,也可以消费其他其他的监控数据。

perfObject:可以理解为监控哪种资源,譬如说处理器,磁盘

instance:监控的资源可能有多个实例,多个网卡,多个CPU,多块磁盘等

counter:计数器,每一个instance都会有多个计数器,例如cpu的idle,user,interrupt都是一个counter

 

越来越直观的驾驭那个概念: 

 图片 5

 

 

图片 6
图1图片 7
图2

2.3 消费Performance Counter数据

       从地点的架构图来看能够利用registry API大概 PDH.dll
,可能wmi等3种格局来开销数据。那二种API是C只怕C++开荒的。

 

1)Registry API :

 

2)WMI:

 

3)PDH API:

此时此刻已知了多少个版本:

C++:

 

Python :

Pywin3第22中学有二个win32pdh的模块,就是python版本的pdh。

 

 

其他工具:

4)windows自带的typeperf命令

5)nsclient++

 

属性对象有三种:一种是单实例对象,另一种是多实例对象。图2和图3分不要陈述了这两种属性对象的数据协会格局。各种对象数据块包含了贰个PE普拉多F_OBJECT_TYPE结构,描述对象的性情数据。紧随其后是PE奥迪Q7F_COUNTER_DEFINITION结构列表,描述了质量对象的整整计数器定义。对于单实例对象,计数器定义列表后是二个PE大切诺基F_COUNTER_BLOCK结构,计数器数据紧随其后。每一种PELacrosseF_COUNTER_DEFINITION结构中定义了计数器数据相对于PE卡宴F_COUNTER_BLOCK的偏移量,由此得以特别有援救地获取任何计数器的值。对协理多实例质量对象的话,PE奥迪Q5F_COUNTER_DEFINITION结构列表之后是一组实例音信数据块,每种代表代表一个目的实例。每种实例消息数量块由二个PE普拉多F_INSTANCE_DEFINITION结构体、实例名和二个PEOdysseyF_COUNTER_BLOCK结构体组成。后边是计数器值数据,与单实例对象同样。

3、使用基于PDH的python客商端

 

Win32pdh API说明:

运用win32pdh API的一个简易教程:

 

听他们讲win32pdh 封装的一套API:

 图片 8

 

 

 

最左侧是win32pdh模块,从python的仓库里下载就可以。

Windows_collector是自己封装的为主代码,用于通过轻松的代码,就能够监察和控制到系统资源。

最左侧的则是来行使那套API的。使用那套API的裨益是,不必去再花时间学习win32pdh那套API就能够轻巧的获得你要的督察数据。

 

这套API的源码:

 图片 9

图片 10

图片 11

图片 12

 代码的命名规范不是 python的,想一定要看起来,也不会有太多的难堪。

运用那套API,只需求简单的代码就能够对系统能源举行监察,例如:

ObjectCollector("Memory").collect()

 

图片 13

图3

三、品质计数器的框架结构

个性计数器采取的是顾客端服务器结构,品质数据应用分享内部存款和储蓄器存款和储蓄,在行使中自定义品质计数器,在应用程序调用的时候调用质量计数器进行计数。种类布局如下:

图片 14

质量计数器可以博得应用程序质量的实时度量数据,而无需通过记日志,进行另外的管理。并且品质计数器能够长距离查看,可以透过处理工科具(MOM)实行政管理制。在费用上也不行的小。

四、.NET质量计数器落成

在.NET Framework下有个程序集

(C:WINDOWSMicrosoft.NETFrameworkv2.0.50727perfcounter.dll)完毕了品质计数器效率,蕴含品质计数器的安装/卸载,值的读写。

发表评论

电子邮件地址不会被公开。 必填项已用*标注