<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>中文 &#187; 韦奕多</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/yiduo-wei/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Mon, 28 May 2012 14:23:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Windows PDH库在性能测试中的应用</title>
		<link>http://software.intel.com/zh-cn/blogs/2008/08/22/windows-pdh/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2008/08/22/windows-pdh/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 08:54:28 +0000</pubDate>
		<dc:creator>韦奕多</dc:creator>
				<category><![CDATA[其他]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2008/08/22/windows-pdh/</guid>
		<description><![CDATA[相信大家都已经使用过了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中找到相关文档。]]></description>
			<content:encoded><![CDATA[<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;"><span style="small;"><span style="宋体;">相信大家都已经使用过了<span lang="EN-US">windows</span>自带的性能测试工具<span lang="EN-US">perfmon</span>。<span lang="EN-US">perfmon</span>能够实时的抓取当前环境的硬件信息<span lang="EN-US">,</span>并直观的展示出来。但是当你想在编程中利用这些数据，<span lang="EN-US">perfmon</span>就不是那么方便了。那么<span lang="EN-US">windows</span>是否提供了合适的<span lang="EN-US">api</span>来完成这些功能呢？答案是肯定的，这就是<span lang="EN-US">Performance Data Helper(PDH)</span>库。<span lang="EN-US">PDH</span>库提供了一组功能强大的接口，让使用者能够方便的获取到包括<span lang="EN-US">CPU</span>信息，内存信息，<span lang="EN-US">I/O</span>信息等等在内的性能数据。<span lang="EN-US"></span></span></span></span></p>
<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;" lang="EN-US"><span style="宋体;"> </span></span></p>
<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;"><span style="small;"><span style="宋体;">使用<span lang="EN-US">PDH</span>库获取性能数据的过程如下：首先，通过打开一个查询<span lang="EN-US">(PdhOpenQuery())</span>，然后在在该查询中添加需要的计数器<span lang="EN-US">(PdhAddCounter())</span>，然后在合适的时间点采集数据<span lang="EN-US">PdhCollectQueryData()</span>，然后在从结构<span lang="EN-US">PDH_FMT_COUNTERVALUE</span>中得到数据<span lang="EN-US">(dhGetFormattedCounterValue())</span>。在使用完成后，还需要关闭该查询。<span lang="EN-US"></span></span></span></span></p>
<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;" lang="EN-US"><span style="宋体;"> </span></span></p>
<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;"><span style="small;"><span style="宋体;">在上面的过程中，我们需要定位到一个具体的计数器，作为<span lang="EN-US">api</span>的参数。运行环境的硬件数据和<span lang="EN-US">OS</span>数据的种类十分繁多，准确精炼的表示这些数据的意义是非常关键的。<span lang="EN-US">Windows</span>的做法是一个被成为<span lang="EN-US">Counter Path</span>的字符串表示。顾名思义，这个字符串非常类似于文件系统的文件路径。<span lang="EN-US">Counter Path</span>的语法如下：<span lang="EN-US"></span></span></span></span></p>
<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;" lang="EN-US"><span style="small;"><span style="宋体;">\\Computer\PerfObject(ParentInstance/ObjectInstance#InstanceIndex)\Counter</span></span></span></p>
<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;"><span style="small;"><span style="宋体;">其中，<span lang="EN-US">Computer</span>表示机器名或者<span lang="EN-US">IP</span>地址，默认值为本机；<span lang="EN-US">PerfObject</span>表示性能对象，通常为处理器，内存等等；<span lang="EN-US">ParentInstance</span>，<span lang="EN-US">ObjectInstance</span>和<span lang="EN-US">InstanceIndex</span>是可选项，在对象有多个实例的时候用到；最后，<span lang="EN-US">Counter</span>表示相应的寄存器。例如：<span lang="EN-US"></span></span></span></span></p>
<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;" lang="EN-US"><span style="small;"><span style="宋体;">\\127.0.0.1\Processor\% Processor Time</span></span></span></p>
<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;"><span style="small;"><span style="宋体;">该<span lang="EN-US">Counter Path</span>表示本地的处理器的<span lang="EN-US">CPU</span>利用率。将该字符串作为参数传递给<span lang="EN-US">PdhAddCounter</span>就可以将该计数器添加到查询中去了。<span lang="EN-US"></span></span></span></span></p>
<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;" lang="EN-US"><span style="宋体;"> </span></span></p>
<p class="MsoPlainText" style="0cm 0cm 0pt;"><span style="宋体;"><span style="small;"><span style="宋体;">读者如果想更加详细了解<span lang="EN-US">PDH</span>的细节，可以在<span lang="EN-US">MSDN</span>中找到相关文档。<span lang="EN-US"></span></span></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2008/08/22/windows-pdh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

