PDH数据扩展-帮助文档
-
注:本项目隶属于SAO Utils扩展补完计划
1 简介
1.1 什么是PDH数据扩展
PDH数据扩展是为SAO Utils开发的第三方扩展插件,其开发目标是在尽可能多的为SAO Utils获取来自计算机的性能数据(硬件、系统、驱动、网络、服务等)。通过NERvGear SDK封装,可为SAO Utils以标准数据源的形式提供选定数据的整数值、小数值。而本扩展获取性能数据的原理,是采用Windows原生提供的PDH性能计数器。
1.2 什么是PDH
PDH,全称Performance Data Helper(性能数据助手),是微软开发在Windows平台上用于收集性能数据的一套API。这套工具从Windows 2000开始就已经集成在Windows系统中,可以通过通常所说的性能监视器
(perfmon.exe)进行查看。
1.3 什么是性能计数器
提供性能数据的工具。每当您通过PDH数据扩展添加了一个数据,即是指定了一条PDH表达式、启用了一个新的性能计数器。您只需要关注于PDH表达式,剩下的事由扩展来帮您完成。
PDH表达式=[计算机名]\[性能对象]([实例])\[计数器]
- 注:计算机名若省略则表示本机,有的PDH表达式不需指明实例。
2 前置需求
2.1 系统需求
x86 | x64 | |
---|---|---|
Windows 2000 | √ | - |
Windows XP | √ | √ |
Windows Vista | √ | √ |
Windows 7 | √ | √ |
Windows 8 | √ | √ |
Windows 8.1 | √ | √ |
- | - | |
Windows 10 | √ | √ |
2.2 SAO Utils需求
SAO Utils版本不低于Alpha 3/Beta 1,NERvGear版本不低于0.3.0。
3 使用方法
3.1 启用扩展
3.2 选择计数器
这里用SAO Utils自带的GGO Widget挂件做演示,目标是在下图红框处显示当前计算机的Wifi下载速率。
右击上图红框标识的项目,单击编辑项目
进入项目设定
对话框。
在对话框的类型选项
中选择数字或文本
,指明该项目使用来自扩展的数据,单击下方点击选择数据
按钮进入选择数值…
对话框。
在左侧的所有数据中找到PDH数据集
->性能计数器数据
,若希望显示小数值则选取小数值
项,若仅希望显示整数部分则选取整数值
项。此处作为示范选择小数值。
单击更新参数右侧的…
按钮选择所需的性能计数器。由于此时我们需要的是Wifi下载速率,所以我们找到Network Interface
(网络接口)项下的Bytes Received/sec
(每秒接收字节数)。在下方的实例中选择本机的无线网络适配器,本例中的无线适配器是图中Broadcom 802.11n 网络适配器
。选择完毕后单击确定,此时更新参数已经自动填充为\Network Interface(Broadcom 802.11n 网络适配器)\Bytes Received/sec
,此字符串即是所谓PDH表达式,若您已知所需的PDH表达式,可直接粘贴于更新参数中。【友情提示:勾上显示描述
可以查看对应PDH项的含义】
由于PDH提供的原始数据是以Byte/s(字节/秒)为单位,可能导致数值过大不够直观,所以此处我们可以对数值选择合适的单位进行转化如KB/s或MB/s等,本例以KB/s为单位。单击数值单位
右侧下拉框,选择单位K
,即可将数值缩小1K倍由B/s转化为KB/s。右侧的显示为
可以指定单位的显示方式,这里更改为KB/s
。在上方的预览
我们可以看到数值成为了我们期望的格式。
单击确认,数据选择完毕。再次单击确认,项目设置完毕。我们可以看到Wifi下载速率已经可以正确的显示在GGO Widget中。至此,本例PDH数据设置完成。
3.3 设置取值范围
3.2所示方法已经可以获取某个性能计数器的数据,但有时仅仅只获取数据用于显示还不够,像下图所示的GGO Widget条形图与直方图、HP-Bar这类图形化数据,还需要指定数值的最大值、最小值。由于PDH数据来源多样,不同性能计数器取值范围均不同,无法确定一个通用的取值范围,好在PDH数据扩展为您预留了指定取值范围的方式。下面以HP-Bar做演示,目标是在下图红框处显示当前空余内存量。
首先按照3.2步骤选择PDH表达式为\Memory\Available MBytes
,此性能计数器提供的数据是当前空余内存量,默认单位是MB。本例中的计算机内存总量设为8GB,即为8192MB,因此空余内存量的取值范围设为0MB~8192MB。
在PDH表达式前端按照[最小值,最大值]
的格式插入相应的取值范围,在本例中应当插入的取值范围为[0,8192]
。若您不确定当前设置取值范围是否生效,可以在图示的下拉框中将当前值
更改为最小值
或最大值
,若上方预览正确则表示取值范围设置生效。
确认所有操作后,HP-Bar已经可以按照正常比例显示当前空余内存量。至此,本例PDH数据取值范围设置完成。
4 常用性能计数器参考
【友情提示:勾上PDH对话框中的显示描述
可以查看对应PDH项的含义】
4.1 CPU相关
性能对象 | 计数器 | 描述 |
---|---|---|
Processor | % Idle Time | 处理器空闲时间百分比 |
Processor | % Interrupt Time | 处理器中断时间百分比 |
Processor | % Processor Time | 处理器执行时间百分比 |
Processor | % User Time | 处理器用户模式时间百分比 |
Processor | % Privileged Time | 处理器特权模式时间百分比 |
Processor | Interrupts/sec | 处理器每秒中断次数 |
Processor Information | Processor Frequency | 线程频率(MHz) |
4.2 内存相关
性能对象 | 计数器 | 描述 |
---|---|---|
Memory | Available Bytes | 空余物理内存 |
Memory | Cache Bytes | 已缓存内存 |
Memory | Cache Faults/sec | 每秒缓存中断次数 |
Memory | Committed Bytes | 虚拟内存使用量 |
4.3 存储相关
性能对象 | 计数器 | 描述 |
---|---|---|
LogicDisk | % Disk Read Time | 分区读取时间百分比 |
LogicDisk | % Disk Write Time | 分区写入时间百分比 |
LogicDisk | % Disk Time | 分区读写时间百分比 |
LogicDisk | % Free Space | 分区可用空间百分比 |
LogicDisk | % Idle Time | 分区空闲时间百分比 |
LogicDisk | Disk Read Bytes/sec | 分区读取速率 |
LogicDisk | Disk Write Bytes/sec | 分区写入速率 |
LogicDisk | Free Megabytes | 分区可用空间(MB) |
PhysicalDisk | % Disk Read Time | 磁盘读取时间百分比 |
PhysicalDisk | % Disk Write Time | 磁盘写入时间百分比 |
PhysicalDisk | % Disk Time | 磁盘读写时间百分比 |
PhysicalDisk | % Idle Time | 磁盘空闲时间百分比 |
PhysicalDisk | Disk Read Bytes/sec | 磁盘读取速率 |
PhysicalDisk | Disk Write Bytes/sec | 磁盘写入速率 |
4.4 网络相关
性能对象 | 计数器 | 描述 |
---|---|---|
Network Adapter或Network Interface | Bytes Received/sec | 下载网速,单位B/s |
Network Adapter或Network Interface | Bytes Sent/sec | 上传网速,单位B/s |
5 Q&A
Q:为何我选择性能计数器时会提示不能添加这些计数器
?
A:这可能是由于性能监视器的注册表损坏或者无法正确读取导致,尝试以管理员权限运行lodctr /R
修复(任务管理器->文件->运行新任务->填入lodctr /R
,勾选管理权限
->确定)。
Q:为何我能选的计算机与其他计算机的性能计数器不太一样?
A:性能计数器受系统版本、组件影响,可选性能计数器的数量、形式都会不同。
6 反馈
若此扩展在使用中出现任何异常、错误,欢迎在此页留言或发送邮件至feedback@debug.moe