• 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中得以查看质量对象、质量流速计和对象实例,可透过增添计数器来查阅相关描述音信。

下一场在英特网找学习经验,倏然想到那么些包当初自然是有个源点的,起源是轻便通晓且不复杂的,化解叁个单纯难点的,就如小编要好写框架相仿(即先火速做出效果、原型,然后再每每迭代改良卡塔 尔(英语:State of Qatar)。

 

实质上,能够透过编写程序来寻访具备的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卡塔 尔(阿拉伯语:قطر‎ Windows财富监视器

以此工具得以阅览系统能源到底是由什么进程消耗的。通过它,能够高速查见到到底怎样进程占用了你的系统能源。

 图片 2

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

前三种工具已经提供您要监督的超过50%职能,在少数景况下,只怕依旧不能够定位难题,那个时候就供给您更进一层的问询系统的运行意况。那么这些工具正是贰个对的的接收。

 图片 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来花费数据。

 

 

 

属性数据的头顶是三个PEENVISIONF_DATA_BLOCK结构(如图1所示),它呈报系统和总体性数据完全音信,可从Global键值处查询获得该组织数据。PE本田CR-VF_DATA_BLOCK之后,定义了系统中的全体属性对象类型(PEPRADOF_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分不要讲述了那二种属性对象的数据组织情势。每一种对象数据块包罗了七个PE奥迪Q3F_OBJECT_TYPE结构,描述对象的性质数据。紧随其后是PE科雷傲F_COUNTER_DEFINITION结构列表,描述了品质对象的不论什么事计数器定义。对于单实例对象,计数器定义列表后是二个PE大切诺基F_COUNTER_BLOCK结构,流速計数据紧随其后。每个PE普拉多F_COUNTER_DEFINITION结构中定义了计数器数据相对于PEENVISIONF_COUNTER_BLOCK的偏移量,由此能够十三分有助于地获得全套流速計的值。对帮忙多实例质量对象的话,PE大切诺基F_COUNTER_DEFINITION结构列表之后是豆蔻梢头组实例音讯数据块,每一种代表代表四个指标实例。各类实例信息数量块由叁个PE福特ExplorerF_INSTANCE_DEFINITION结构体、实例名和二个PECRUISERF_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++的综合演化版,不独有

不无二者的全套优点,何况完全品质更佳,可是其抽象程度高。卡塔尔国

扩张模块,日常用C或C++编排,其实可以说是后生可畏种更理想的D语言编写的。

品质流量计能够获得应用程序质量的实时衡量数据,而没有必要经过记日志,进行其它的拍卖。并且质量流量计可以长间距查看,能够经过管理工科具(MOM卡塔 尔(英语:State of Qatar)实行处理。在花销上也要命的小。

如上所述,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版本卡塔 尔(英语:State of Qatar)

采纳中假使现身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卡塔 尔(英语:State of Qatar)达成了品质流量计成效,饱含品质流速計的安装/卸载,值的读写。

那边是网络探讨API的局地发言:

在命名空间System.Diagnostic提供了黄金年代组质量流速計类,包罗PerformanceCounterCategory,PerformanceCounter,PerformanceCounterInstaller,CouterSample等等。

第生机勃勃,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奥迪Q5LAPPED()

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下的塞里alBase类,相同的时间还利用了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

相关文章