图片 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,内存,磁盘,互连网等系统财富的监督检查。它根本监督检查系统能源的全部使用境况,使用它,大家能够开采是不是有能源达成瓶颈了之类。

 图片 1

 

2卡塔 尔(英语:State of Qatar) Windows能源监视器

其意气风发工具得以看看系统财富到底是由什么进程消耗的。通过它,能够飞快查见到到底如何进度占用了你的系统财富。

 图片 2

3卡塔 尔(英语:State of Qatar) 品质监视器

前三种工具已经提供你要监督的绝大超多成效,在少数景况下,或然如故无法定位问题,这个时候就须要你更进一层的摸底系统的运转情状。那么这几个工具便是二个不易的取舍。

 图片 3

 

性情日志和警示是当作 Windows
操作系统的大器晚成都部队分批发的大器晚成种管理质量监察和控制工具。它依附由各类 Windows
组件、子系统和应用程序公布的性子计数器,令你能够追踪财富利用情形甚至指向性时间以图表格局绘制它们。您能够运用
Performance Logs and Alerts
来监督规范的性质流量计(比如,内部存款和储蓄器使用景况或计算机使用情况卡塔尔,或许您能够定义您自身的自定义计数器来监督应用程序特定的位移。

图片 4

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

      
Windows的这个监察和控制工具之所以能够显得那几个能源的气象,它们的多少出自都以一个叫Performance
Counter的东东。

 

二、HKEY_PERFORMANCE_DATA数据组织

逐一批发版本

2.1 PerformanceCounter 架构

PerformanceCounter架构如下:

 图片 5

 

 

行使了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。

内部最下边四个日常是稍稍难点的,举例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

 

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

 图片 6

 

 

图片 7
图1图片 8
图2

图片 9

2.3 消费Performance Counter数据

       从地点的架构图来看能够应用registry API也许 PDH.dll
,可能wmi等3种艺术来开销数据。那二种API是C或许C++开辟的。

 

1)Registry API :

 

2)WMI:

 

3)PDH API:

这段日子已知了多个版本:

C++:

 

Python :

Pywin32中有四个win32pdh的模块,就是python版本的pdh。

 

 

其他工具:

4)windows自带的typeperf命令

5)nsclient++

 

属性对象有二种:风度翩翩种是单实例对象,另风度翩翩种是多实例对象。图2和图3分不要讲述了那二种脾性对象的数据协会形式。各个对象数据块包涵了三个PEPRADOF_OBJECT_TYPE结构,描述对象的属性数据。紧随其后是PEHighlanderF_COUNTER_DEFINITION结构列表,描述了品质对象的整套流速計定义。对于单实例对象,流速计定义列表后是三个PE昂科拉F_COUNTER_BLOCK结构,计数器数据紧随其后。各类PE奥迪Q7F_COUNTER_DEFINITION结构中定义了计数器数据相对于PE奥迪Q7F_COUNTER_BLOCK的偏移量,由此能够足够便于地赢得全套计数器的值。对支撑多实例品质对象的话,PELANDF_COUNTER_DEFINITION结构列表之后是风流倜傥组实例音信数据块,各个代表代表三个指标实例。种种实例新闻数据块由贰个PE昂CoraF_INSTANCE_DEFINITION结构体、实例名和一个PERAV4F_COUNTER_BLOCK结构体组成。前面是流速計值数据,与单实例对象相仿。

文本结构

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

 

Win32pdh API说明:

采取win32pdh API的八个轻易教程:

 

基于win32pdh 封装的黄金时代套API:

 图片 10

 

 

 

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

Windows_collector是自我封装的焦点代码,用于通过轻便的代码,就能够监察和控制到系统能源。

最左边的则是来采用那套API的。使用那套API的好处是,不必去再花时间读书win32pdh那套API就足以轻易的拿走你要的监督数据。

 

这套API的源码:

 图片 11

图片 12

图片 13

图片 14

 代码的命名标准不是 python的,想一定要看起来,也不会有太多的多数不便。

动用那套API,只须求轻巧的代码就能够对系统财富进行监督检查,举个例子:

ObjectCollector("Memory").collect()

 

图片 15

_init_.py担任落实平台宽容,其实正是在导入那些包的时候依据平台来选取差异的管理类,作者的是windows系统由此跑到serialwin32.py文本下来跟踪源码,第生龙活虎行代码就是

图3

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

三、品质计数器的架构

win32file是个啥?包文件夹里面并从未那些文件,那么是在在哪导入的呢?

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

在早先面还得理解pyd是什么文件:(源自:http://proupy.com/news/33)

图片 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++的综合作演出变版,不独有

具有二者的百分百优点,并且完全品质更佳,然则其抽象程度高。卡塔 尔(英语:State of Qatar)

恢宏模块,平时用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,分别管差异的局地卡塔尔

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

图片 17

Requests Failed

结构图

Request Execution Time

小编翻看serial文件,发现内部有

Requests/Hour

图片 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

发表评论

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