韦德国际官网1946 18

Windows系统财富监察,利用Windows质量流速计

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

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

一、概述

本身看最新的pyserial代码开采看不懂~Σ( ° △
°|||)︴,尝试用跑跑看后生可畏看效果,debug跟生机勃勃跟流程的措施来谙习通晓,开掘·····特么~转太多弯啦~根本就hold不回复啊!脑容积跟底蕴都缺乏啊!于是想着怎么从左侧来占有这么些壁垒…………

 

个性监视,是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)来拜望品质计数器音讯。

下一场就在github官方网址找到了它的顺序版本:

1、Windows自带系统财富监察和控制工具

咱俩都理解,Windows自带有系统能源监视器。首要有3个地点:

1卡塔尔Windows的任务微机的习性页签,包涵了CPU,内部存款和储蓄器,磁盘,网络等系统能源的监察。它至关心珍视要监督检查系统能源的完全使用状态,使用它,我们能够开采是还是不是有能源完毕瓶颈了之类。

 韦德国际官网1946 1

 

2卡塔尔国 Windows能源监视器

本条工具得以看出系统能源到底是由什么进程消耗的。通过它,能够长足查见到到底如何进程占用了你的系统财富。

 韦德国际官网1946 2

3卡塔 尔(阿拉伯语:قطر‎ 品质监视器

前二种工具已经提供您要监督的半数以上意义,在好几情形下,恐怕依旧不可能定位难题,当时就须要您更进一层的打听系统的运转情状。那么这么些工具便是三个科学的挑选。

 韦德国际官网1946 3

 

特性日志和警示是作为 Windows
操作系统的风度翩翩有的发行的意气风发种管理质量监控工具。它依赖由种种 Windows
组件、子系统和应用程序发表的性质计数器,让你能够追踪能源选拔状态以至针对性时间以图片形式绘制它们。您能够利用
Performance Logs and Alerts
来监督标准的质量计数器(比方,内部存款和储蓄器使用状态或计算机使用情状卡塔尔,或然你能够定义您自身的自定义流速计来监督应用程序特定的活动。

韦德国际官网1946 4

2、Windows 监察和控制的数额出自:Performance Counters

      
Windows的那么些监督工具之所以能够显示那几个财富的情景,它们的数目来源都是三个叫Performance
Counter的东东。

 

二、HKEY_PERFORMANCE_DATA数据组织

逐一批发版本

韦德国际官网1946,2.1 PerformanceCounter 架构

PerformanceCounter架构如下:

 韦德国际官网1946 5

 

 

应用了Producer / Consumer 架构,援救三种顾客端从Registry开支数量。

上图中,A 使用Registry接口来花销数量,而B 和 Performance
Monitor三个客户端则利用了pdh.dll来花费数据。

 

 

 

特性数据的头顶是四个PEEnclaveF_DATA_BLOCK结构(如图1所示),它陈诉系统和性质数据总体新闻,可从Global键值处查询获得该组织数据。PEENVISIONF_DATA_BLOCK之后,定义了系统中的全体性质对象类型(PE奥迪Q5F_OBJECT_TYPE),个中每一个对象类型尾部中陈说了下贰本性质对象类型的偏移量Offset。

中间最上面多个日常是稍稍难题的,比如release0_1和2是并口的公文,last-svn-state是爱莫能助运维的,因而从release1_0下手,

2.2 Performance Counter 数据结构

假诺你想用程序来开支Counter的数据,无论接收哪一类API来费用数量,不论接收哪类工具来成本数据,都急需掌握Performance
Counter的园地语言,也便是说要打听它里面包车型大巴数额是怎样组织的。

 

它的基本概念如下:

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

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

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

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

 

更加直观的敞亮这么些概念: 

 韦德国际官网1946 6

 

 

韦德国际官网1946 7
图1韦德国际官网1946 8
图2

韦德国际官网1946 9

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奥迪Q7F_OBJECT_TYPE结构,描述对象的性质数据。紧随其后是PEEnclaveF_COUNTER_DEFINITION结构列表,描述了品质对象的方方面面流速計定义。对于单实例对象,流量计定义列表后是二个PEPanameraF_COUNTER_BLOCK结构,流量计数据紧随其后。每种PE本田CR-VF_COUNTER_DEFINITION结构中定义了流量计数据相对于PEPAJEROF_COUNTER_BLOCK的偏移量,由此能够充裕有益地获得全套计数器的值。对支撑多实例质量对象的话,PEPRADOF_COUNTER_DEFINITION结构列表之后是风度翩翩组实例音讯数据块,每种代表代表四个指标实例。每一种实例音讯数据块由叁个PEOdysseyF_INSTANCE_DEFINITION结构体、实例名和叁个PEENVISIONF_COUNTER_BLOCK结构体组成。前边是计数器值数据,与单实例对象相近。

文件结构

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

 

Win32pdh API说明:

接受win32pdh API的一个简约教程:

 

基于win32pdh 封装的豆蔻年华套API:

 韦德国际官网1946 10

 

 

 

最右边是win32pdh模块,从python的旅馆里下载就可以。

Windows_collector是自身封装的大旨代码,用于通过轻易的代码,就能够监察和控制到系统财富。

最侧面的则是来行使那套API的。使用那套API的裨益是,不必去再花时间读书win32pdh那套API就足以轻易的拿走你要的监察和控制数据。

 

这套API的源码:

 韦德国际官网1946 11

韦德国际官网1946 12

韦德国际官网1946 13

韦德国际官网1946 14

 代码的命名规范不是 python的,想非看不可起来,也不会有太多的孤苦。

应用那套API,只需求简单的代码就可以对系统能源实行监督检查,举个例子:

ObjectCollector("Memory").collect()

 

韦德国际官网1946 15

_init_.py负担得以完成平台宽容,其实正是在导入那么些包的时候依照平台来筛选不一致的管理类,作者的是windows系统由此跑到serialwin32.py文件下来追踪源码,第黄金时代行代码就是

图3

import    win32file   #The base COM port and file IO functions.

三、质量流量计的架构

win32file是个什么?包文件夹里面并不曾那些文件,那么是在在哪导入的吗?

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

在从前边还得通晓pyd是甚文件:(源自:http://proupy.com/news/33)

韦德国际官网1946 16

DLL文件即动态链接库文件,是一种可试行文件,它同意程序共享实行特殊职务所不可贫乏的代码和其余国资本源。打不开,不过能够利用反汇编;

PYD是一种PYTHON动态模块。实质上只怕dll文件,只是改了后缀为PYD,pyd:

第一是我们最广泛的.py文件。以.py扩张名的公文是源代码文件,由python.exe解释,可在决定台下运转。当然也足以用文件编辑器进

行修改。

接下去介绍的是.pyc文件。以.pyc为扩张名的是python的编译文件。.pyc文件是不可见用文件编辑器之类的进行编写制定的,可是相近它的

可取在于.pyc文件的执行进程快于.py文件。至于为啥要有.pyc文件,那几个要求太明朗了,因为py文件是能够一贯看看源码的,假设

你是开荒商业软件的话,不或者把源码也泄漏出来吗?所以就须要编写翻译为pyc后,再公布出去。

再接下去介绍的是.pyw文件。超级多行使过.pyc文件的同室都晓得,.pyc文件实行的时候桌面会现身黑糊糊的窗口,偶然那是老灾祸

看的。于是.pyw文件就现身了。.pyw文件与.pyc文件精气神上并未什么分别,只是.pyw推行的时候不会现身黑窗口。.pyw
格式重要

是被规划来运营开辟到位的纯图形分界面程序的。
纯图形分界面程序的顾客无需见到调节台窗口。值得风姿罗曼蒂克提的是,开拓纯图形分界面程序

的时候,你可以一时半刻把 .pyw 改成 .py ,
以便运营时能调出调控台窗口,看见有着错误消息,方便开展更改。

接下去介绍的是.pyo文件。pyo是优化编写翻译后的程序。 python -O
源文件就可以将源程序编译为pyo文件。相似.pyo文件也是无法用文

本编辑器编辑的。

最后介绍的是.pyd文件。.pyd文件并非运用python编写而成,.pyd文件日常是其它语言编写的python扩大模块。(早前又在互连网来看

过有关表明,.pyd文件是用D语言依照一定的格式编写,并管理成二进制文件。那么什么样是D语言呢??它是c/c++的汇总演变版,不止

持有二者的一切优点,何况完全品质更佳,然则其抽象程度高。卡塔尔

扩展模块,日常用C或C++编写制定,其实能够说是意气风发种更出色的D语言编写的。

性格流速計能够获得应用程序质量的实时衡量数据,而不必要经过记日志,进行其余的拍卖。况且质量计数器能够远程查看,能够经过管理工科具(MOM卡塔 尔(阿拉伯语:قطر‎举办拘禁。在开销上也不行的小。

看来,pywin32正是在python跟windows系统API之间确立三个大桥,中间件,能够在python下直接windows编程。而win32file是内部的二个组成都部队分,由此大家顺藤摘瓜追到那基本上就能够告意气风发段落了(知道提供什么API就能够了卡塔尔,因为再往下的话便是windows系统一编写程了。

四、.NET质量计数器达成

要是硬是有人要缺根径,应当要追的话,那估摸再往下得到系统驱动层的api,再往下到bsp层的api,再往下到汇编测api,由此实际最下边包车型的士思路还不是就这么—封装(举例ATC上层不论你整的多多复杂多么多的api,笔者再最尾巴部分正是贰个单片机通过串口人机联作些数据,因而风流倜傥旦把单片机的作用区划好定义好数据结构及api,今后的大厦都以依据此的,因而懂就好,要跳出来,走马观花,抓住概况,当然前提是本人从最底层的硬件设计、驱动程序到上位的顺序都写过才会有那么些领会,假若那么些一贯写上位机代码的人猜想会对底层的运转搭乘飞机制心虚吧~)

在.NET Framework下有个程序集

探访网络说的Pywin32足以像VC同样的方式来选取PYTHON开辟win32利用,小编就下载了个,可是不会动用,有宗旨的入门教程吗,可能什么人给说说,举个例子说画分界面怎么的!

Python未有自带访谈windows系统API的库的,需求下载第三方库。库的称号叫pywin32,能够从英特网平昔下载,下载链接:http://sourceforge.net/projects/pywin32/files%2Fpywin32/(下载切合的Python版本卡塔尔

接纳中风姿浪漫经现身ImportError: No module named win32api 依旧现身ImportError: No module named win32con,表明您的库未有安装好。

介绍其风流倜傥Curry面最根本的八个模块:win32api和win32con(约等于说在windows下安装win32all.exe之后会变卦二个库,那些Curry面就有win32api和win32con以及win32file,分别管分裂的局地卡塔 尔(英语:State of Qatar)

win32api看名就能猜到其意义,正是用python对win32的当地api实行了包装;win32con个人驾驭为win32constant,即win32的常量定义。

(C:WINDOWSMicrosoft.NETFrameworkv2.0.50727perfcounter.dll卡塔尔达成了质量流量计作用,满含质量流量计的设置/卸载,值的读写。

此处是网络钻探API的有的谈话:

在命名空间System.Diagnostic提供了黄金时代组品质计数器类,包罗PerformanceCounterCategory,PerformanceCounter,PerformanceCounterInstaller,Couter萨姆ple等等。

率先,API的乐趣是Application Program Interface,应用程序接口.

实质上,只如果程序,都能够对外提供API,譬喻您写三个网址.然后对外提供API,任何人都足以通过你提供的API获取到对应的新闻.比方你网址中的数据.

win32
API是windows系统提供的API,

.NET 也得以提供API

即使如此提供的功力或者会有丰腴,不过不影响说,其实那是八个例外程序提供的API.

不能够因为说windows提供了API,那么.NET就不能够提供API了.

何况.NET的API尽管相当多是对WINDOWS的包装,不过这么能够制止一位要学习.NET.还绝对要去上学WINDOWS的API.

在.NET中质量流量计有优异的肤浅封装,完成起来比C/C++轻易得多。大家在使用常常只关切一些央浼类型的多寡衡量,比如下述:

在读源码的时候能够看出选择了三个:win32file.OVE纳瓦拉L应用软件ED()

Requests Started

windows编程的API

Overlapped
I/O是win32的风姿洒脱项本事,你能够须要操作系统为您传送数据,况且在传递完成时通报你。那项本领使您的顺序在I/O进行中依然可以一连管理东西。Overlapped
I/O的为主格局是以ReadFile和WriteFile函数完结的。

WaitCommEvent(handle, overlapped)

Waits for an event to occur for a specified communications device. The
set of events that are monitored by this function is contained in the
event mask associated with the device handle.

Return Value

The result is a tuple of (rc, mask_val), where rc is zero for
success, or the result of calling GetLastError() otherwise.  The
mask_val is the

new mask value once the function has returned, but if an Overlapped
object is passed, this value will generally be meaningless.  See the

comments for more details.

Requests Executing

从pycharm下下载pyserial后其结构如图所示:

Requests Completed

韦德国际官网1946 17

Requests Failed

结构图

Request Execution Time

自己查看serial文件,开掘此中有

Requests/Hour

韦德国际官网1946 18

Requests/5Min

微微少年老成查即可指引宗旨是serialwin32(win情状下卡塔 尔(阿拉伯语:قطر‎下的serial类,其三回九转自serialutil.py下的SerialBase类,同一时常间还利用了win32.py文书,因而难题解释为win32是为什么的?SerialBase肩负什么部分?serialutil要干哪些活?serial是哪些将那几个串起来的?

Requests/Min

针对第八个难点:win32是为啥的?

Requests/Sec

win32下有点DLL文件,那么DLL是什么?ctypes是什么?

而是真正须要做这几个质量流速计的设置/卸载,计数,读取依旧须要多量的代码,通过包装来简化编程接口。对于使用WCF来兑现的劳务,可以依据WCF的扩大性,进行进一层的包裹。

但是动态链接库又是啥?跟静态链接库有吗分化?

 

ctypes是python的三个外表函数库,提供和C语言包容的数据类型,能够平昔调用动态链接库中的导出函数。

.Net最棒施行3:使用品质流速计搜罗品质数据

聊聊Python ctypes
模块

浅谈python中使用C/C++:ctypes

Monitor your SQL
Server

发表评论

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