共 1,395 篇文章
共 6,621 篇文章及评论
- Association for Computing Machinery TechNews (ACM)
- Go Parallel! (Dr. Dobbs)
- HPCwire (Tabor Communications, Inc.)
- insideHPC (John West)
- Joe Duffy's Weblog (Microsoft)
- Microsoft Parallel Programming Development Center (Microsoft Germany)
- MultiCoreInfo.com
- scalability.org (Scalable Informatics)
- Software Dev Blog (Intel Germany)
- Soft Talk Blog (Intel United Kingdom)
- The Moth (Microsoft)
Archives
帖子来自 韦奕多 (Intel) 
Windows PDH库在性能测试中的应用
作者: 韦奕多 (1 篇文章) 日期: 八月 22, 2008 在 1:54 上午
评论 (0)
相信大家都已经使用过了windows自带的性能测试工具perfmon。perfmon能够实时的抓取当前环境的硬件信息,并直观的展示出来。但是当你想在编程中利用这些数据,perfmon就不是那么方便了。那么windows是否提供了合适的api来完成这些功能呢?答案是肯定的,这就是Performance Data Helper(PDH)库。PDH库提供了一组功能强大的接口,让使用者能够方便的获取到包括CPU信息,内存信息,I/O信息等等在内的性能数据。 使用PDH库获取性能数据的过程如下:首先,通过打开一个查询(PdhOpenQuery()),然后在在该查询中添加需要的计数器(PdhAddCounter()),然后在合适的时间点采集数据PdhCollectQueryData(),然后在从结构PDH_FMT_COUNTERVALUE中得到数据(dhGetFormattedCounterValue())。在使用完成后,还需要关闭该查询。 在上面的过程中,我们需要定位到一个具体的计数器,作为api的参数。运行环境的硬件数据和OS数据的种类十分繁多,准确精炼的表示这些数据的意义是非常关键的。Windows的做法是一个被成为Counter Path的字符串表示。顾名思义,这个字符串非常类似于文件系统的文件路径。Counter Path的语法如下: \\Computer\PerfObject(ParentInstance/ObjectInstance#InstanceIndex)\Counter 其中,Computer表示机器名或者IP地址,默认值为本机;PerfObject表示性能对象,通常为处理器,内存等等;ParentInstance,ObjectInstance和InstanceIndex是可选项,在对象有多个实例的时候用到;最后,Counter表示相应的寄存器。例如: \\127.0.0.1\Processor\% Processor Time 该Counter Path表示本地的处理器的CPU利用率。将该字符串作为参数传递给PdhAddCounter就可以将该计数器添加到查询中去了。 读者如果想更加详细了解PDH的细节,可以在MSDN中找到相关文档。
