PDH数据扩展-帮助文档

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 ⑨ - -
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