<?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; Peter Wang (Intel)</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/peter-wang/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Sat, 26 May 2012 06:34:24 +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>多种方法过滤Inspector XE 2011结果</title>
		<link>http://software.intel.com/zh-cn/blogs/2012/05/10/inspector-xe-2011-2/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2012/05/10/inspector-xe-2011-2/#comments</comments>
		<pubDate>Thu, 10 May 2012 03:05:13 +0000</pubDate>
		<dc:creator>Peter Wang (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[Inspector XE Filter]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2012/05/10/inspector-xe-2011-2/</guid>
		<description><![CDATA[提供了多种常用手段过滤Inspector XE的结果。使用户专注于那些引起严重后果的内存访问和线程访问]]></description>
			<content:encoded><![CDATA[<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter1.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter31.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter2.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter41.png"></a>使用Intel® Inspector XE 2011帮助开发人员动态检查运行程序的内存访问错误和线程访问错误（甚至是潜在的错误）。有的用户认为，Inspector XE报的错误基本不会发生，不必担心；有的用户认为，报错在第三方软件，无源代码可修改，可以跳过；有的用户认为，只需知道增量错误，老的错误不要再报。</p>
<p>这一切都可使用工具本身的Suppression功能来完成。</p>
<p>情形1. 假设用户是测试人员，每次只要关心有无新的报错。</p>
<p>步骤1. 检查内存错误或线程错误，结果放在指定目录， 如</p>
<p>inspxe-cl –collect mi2 –result-dir myRes -- ./tachyon_find_and_fix_memory_errors dat/simlpeball.dat</p>
<p>步骤2. 将结果产生于.sup 文件， 如</p>
<p>inspxe-cl –create-suppression-file default.sup –result-dir myRes</p>
<p>步骤3. 再次测试，过滤掉上次的已知结果， 如</p>
<p>inspxe-cl –collect mi2 –suppression-file default.sup –result-dir myRes1 -- ./tachyon_find_and_fix_memory_errors dat/simlpeball.dat</p>
<p>*.sup 文件不可以手工编辑，如用户想要有选择的选取“过滤”内容，可以把.sup文件加入Inspector XE的Project Properties – 在图形界面上取舍内容。本文最后有描述。</p>
<p>情形2. 有些报错内容来自第三方的软件，或暂时不关心的库文件</p>
<p>请参阅此文 - <a href="http://software.intel.com/zh-cn/blogs/2011/08/08/include/">http://software.intel.com/zh-cn/blogs/2011/08/08/include/</a></p>
<p>“include”模式：报告的错误，来自指定的模块。</p>
<p>“exclude”模式：报告所有的错误，除了列出的模块。</p>
<p>上文中，例子中使用的是命令行的方式，用户也可以在图形界面上设定。</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter1.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter1.jpg" alt="" width="560" height="420" /></a></p>
<p>情形3.分析前次结果，去掉“不合理”的报告项。以后运行Inspector XE再也不会出现这些项。</p>
<p>步骤1.运行完整的检查，浏览报告，找出“不合理”的项，按右键，选“Suppress…”</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter31.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter2.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter2.jpg" alt="" width="553" height="343" /></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter31.jpg"></a></p>
<div>
<p>步骤2.选中过滤的问题行（可多选），再按“Create”按钮，内容加入到.sup文件中</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter31.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter31.jpg" alt="" width="465" height="355" /></a></p>
<div>
<p>步骤3.下次运行时使用此.sup文件，如</p>
</div>
<p>inspxe-cl –collect ti3 –suppression-file default.sup –result-dir myRes1 -- ./tachyon_find_and_fix_memory_errors dat/simlpeball.dat</p>
<p>最后再次提请大家注意，.sup 文件是不可手工编辑的。可以加入到Inspector XE的项目（图形界面），再对所有项进行管理。修改后的.sup文件是可以在命令行被使用的！</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter41.png"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/05/filter41.png" alt="" width="555" height="383" /></a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2012/05/10/inspector-xe-2011-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为什么你不能收集OFFCORE_相关的事件样本？</title>
		<link>http://software.intel.com/zh-cn/blogs/2012/03/24/offcore/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2012/03/24/offcore/#comments</comments>
		<pubDate>Sat, 24 Mar 2012 02:03:37 +0000</pubDate>
		<dc:creator>Peter Wang (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[VTune Event]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2012/03/24/offcore/</guid>
		<description><![CDATA[使用VTune（TM）Amplifier XE碰到的问题]]></description>
			<content:encoded><![CDATA[<div>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/03/uncore3.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/03/uncore2.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/03/uncore1.jpg"></a>VTune™ Amplifier XE 性能分析工具可以使用处理器的性能计数器采集样本，进而对事件（如缓存不中，分支误测，写缓冲满等）高频发生的代码进行优化，以提高程序的整体性能。</p>
<p> 可是当我们使用事件OFFCORE_RESPONSE.ANY_REQUEST.LLC_MISS_LOCAL.DRAM_0 和 OFFCORE_RESPONSE.ANY_REQUEST.LLC_MISS_LOCAL.DRAM_1 希望得到第三层缓存不中的情况，</p>
<p>amplxe-cl -collect-with runsa -knob event-config=OFFCORE_RESPONSE.ANY_REQUEST.LLC_MISS_LOCAL.DRAM_0,OFFCORE_RESPONSE.ANY_REQUEST.LLC_MISS_LOCAL.DRAM_1  -- multiply.exe</p>
<p>得到的结果却是：</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/03/uncore1.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/03/uncore1.jpg" alt="" width="417" height="182" /></a></p>
<p>其实OFFCORE_这一类事件并不是基于每个内核的，所以VTune并不会做Event Based Sampling (EBS), 而仅做 Event Based Counting (EBC)。也就是说只记不采（样）。 </p>
<p>而想要知道层三的缓存不中的情况，要使用</p>
<p>amplxe-cl -collect-with runsa -knob event-config=MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS_PS -- multiply.exe</p>
<p>得到希望的结果：</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/03/uncore2.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/03/uncore2.jpg" alt="" width="456" height="200" /></a></p>
<p>那么，可能有同学要问，既然使用这些“只记不采”的Uncore事件得不到结果，为什么要放在事件列表中？</p>
<p>其实还是有用的。比如工具中有一种预定义的分析类型叫“Bandwidth”，是分析内存访问带宽的，就用到OFFCORE_的事件。</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/03/uncore3.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/03/uncore3.jpg" alt="" width="843" height="287" /></a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2012/03/24/offcore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>怎么选择正确的CPU时钟进行性能测量?</title>
		<link>http://software.intel.com/zh-cn/blogs/2012/02/28/cpu-5/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2012/02/28/cpu-5/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 05:34:46 +0000</pubDate>
		<dc:creator>Peter Wang (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[VTune Amplifier XE clocktick]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2012/02/28/cpu-5/</guid>
		<description><![CDATA[关于在VTune Amplifier XE中使用合适的CPU时钟]]></description>
			<content:encoded><![CDATA[<p>虽然CPU时钟（clockticks）是一个基于英特尔架构共有的事件（任何Intel的处理器都含有此类事件）。但是每个处理器上，事件的名称会有所不同。以下以Intel（R）Sandy Bridge 处理器为例看看有那些CPU的时钟可以使用。</p>
<p>CPU_CLK_UNHALTED.THREAD 记录Core Cycles， 当你的线程处于非待机状态。我们知道，由于Intel (R) Step Speed 技术，核的频率可能由于CPU的“忙”或“不忙”随时发生变化。如果核上一直很忙（密集型计算）那么核的频率是个常量，这样程序的执行时间（Elapsed Time）可以计算出来：Elpased_Time = CPU_CLK_UNHALTED.THREAD / CPU_frequency (Seconds)</p>
<p>CPU_CLK_UHHANLTED.REF_TSC 也是用于线程处于非待机状态下记录clocks。所不同的是这个事件计数器不会受到核的频率改变的影响。大家可能还记得有条指令叫RDTSC。TSC是通过震荡电路分频产生的，供操作系统使用（作为定时器，频率稍低于主频，但不受主频的变频影响）。这个事件也可以用来计算程序的执行时间，事件数（clocks）除以TSC的频率（TSC的频率查阅手册）</p>
<p>CPU_CLK_UNHALTED.REF_XCLK 是一种超低频的时钟，也是由震荡电路分频产生。当系统不是处于待机状态，100Mhz的低频时钟用于维护CPU核心，内存，Uncore和外围电路上。100Mhz（3000MHz (30x 100MHz)）的固定频率比Nehalem架构的133Mhz更省电。</p>
<p>有二点说明：</p>
<p>1. 性能调试时，尽量不使用Intel® Turbo Boost超频技术，否则性能计数器的结果较为复杂，难以解释。</p>
<p>2. 性能调试时，尽量不使用Intel® Hyper-Threading 技术，因为有些性能事件是基于每个线程，有些是基于每个核的。</p>
<p>总结一下：当使用VTune™ Amplifier XE进行CPU耗时测量（热点分析）时，如果目标应用程序是密集型计算（期间主频不变），选择CPU_CLK_UNHALTED.THREAD；否则应该选用CPU_CLK_UHHANLTED.REF_TSC计时。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2012/02/28/cpu-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>快速使用PTU工具得到函数调用次数</title>
		<link>http://software.intel.com/zh-cn/blogs/2012/02/21/ptu/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2012/02/21/ptu/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 07:11:55 +0000</pubDate>
		<dc:creator>Peter Wang (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[call count]]></category>
		<category><![CDATA[PTU Hotspot VTune]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2012/02/21/ptu/</guid>
		<description><![CDATA[从PTU工具得到函数调用次数，结合VTune(TM) Amplifier XE的热点函数的报告，进行性能分析。]]></description>
			<content:encoded><![CDATA[<div>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/02/PTU.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/02/PTU1.jpg"></a>Intel® VTune™ Amplifier XE 改善了Call Graph的性能问题，采用统计调用（Statistical Call Graph）的方法，把Sampling（采样）和Call Graph（调用图）的功能（过程）合二位一。这种方法不仅帮助用户找到热点函数，而且找到了调用者的函数以及热点函数调用者的贡献度（消耗CPU的时间，对热点函数而言）。</p>
<p>美中不足的是，虽然基于统计的样本收集（Statistical Sampling）给出了热点函数以及调用关系，但是没有给出调用次数（call count）。</p>
<p>而另外一个实验工具<a href="http://software.intel.com/en-us/articles/intel-performance-tuning-utility/">Intel® Performance Tuning Utility</a> (PTU)  却能很好的解决这个问题。</p>
<p>下载后，解开这个工具包，无需安装。运行此工具会检查许可证（license）, VTune™ Amplifier XE的license可以和PTU共用。本文我们不使用PTU中的Event Based Sampling，就无需卸载VTune™ Amplifier XE的驱动程序以及安装PTU的驱动程序（如有此需求，具体方法见<a href="http://software.intel.com/zh-cn/blogs/2011/02/15/vtune-amplifier-xe-performance-tool-utility/">这篇文章</a>）。</p>
<p>直接在解压缩目录下打开Eclipse，如 /home/peter/ptu40_003_lin_intel64/eclipse/eclipse</p>
<p>创建一个PTU project, 关联一个目标应用程序，然后按右键选“Profile as” – “Basic Call Count”, 运行后产生报告。此报告含应用程序运行中调用到的所有模块（包含了系统的库函数和用户的库函数），可以按程序名和调用的次数进行排序。一般而言，我们可以按感兴趣的模块过滤结果。</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/02/PTU.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/02/PTU1.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2012/02/PTU1.jpg" alt="" width="729" height="459" /></a> </p>
<p>此结果最大的用处是：基于VTune™ Amplifier XE 的热点报告，知道热点函数的时间和每个调用者的“贡献度”，可以知道函数一共被调次数和每个调用者的调用次数（假设PTU和VTune™ Amplifier 测试时目标程序的执行路径是一致的）。</p>
<p>尤为重要的是，我们要找”最热”的函数中“call count”值最大的。此种函数性能上稍作改进，由于调用次数多，对整个应用程序性能的提高，可以“立竿见影”。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2012/02/21/ptu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VTune(TM) Amplifier XE 报告输出gprof的格式</title>
		<link>http://software.intel.com/zh-cn/blogs/2012/01/20/vtunetm-amplifier-xe-gprof/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2012/01/20/vtunetm-amplifier-xe-gprof/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 08:09:03 +0000</pubDate>
		<dc:creator>Peter Wang (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[VTune gprof format]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2012/01/20/vtunetm-amplifier-xe-gprof/</guid>
		<description><![CDATA[使用VTune的小技巧。]]></description>
			<content:encoded><![CDATA[<p>在VTune（TM）Amplifier XE 2011 中包含二类预定义的分析：</p>
<p>1. User-mode Sampling and Tracing Analysis：</p>
<p>热点分析(Hotspots Analysis)，并行分析(Concurrency Analysis)，锁和等待分析(Locks and Waits Analysis)</p>
<p>2. Hardware event-based sampling analysis</p>
<p>一般性研究（General Exploration），内存带宽（Bandwidth），访问冲突（Access Contention），分支预测（Branch Analysis），存储访问（Memory Access），端口饱和（Port Saturation），等。</p>
<p>用户可以在amplxe-gui（图形界面）使用上述预定义的分析类型，结果产生在响应的报告。</p>
<p>当然用户也可以使用命令行（参阅<a href="http://software.intel.com/zh-cn/blogs/2010/11/10/amplxe-cl/">此文</a>）收集性能，结果也可以在命令行输出或导入工具的图形界面。使用命令行的好处是用户可以自定义自己的分析类型，如：</p>
<ol>
<li>热点分析中，自定义采样间隔，参阅<a href="http://software.intel.com/en-us/articles/cannot-use-user-defined-hotspots-in-command-line">此文</a></li>
<li>自选的CPU事件计数器，参阅<a href="http://software.intel.com/en-us/articles/event-configuration-from-the-command-line/">此文</a> </li>
</ol>
<p>VTune™ Amplifier XE 定义了多种自己的输出格式，可以显示在工具的图形界面上。除此之外，工具还支持了gprof的输出格式。此种格式仅可以在命令行输出，<strong>不可以在图形界面上输出</strong>。</p>
<p>请看下面例子：</p>
<p>VTune的输出格式列出最热函数，而不是全部；gprof格式给出全部函数（即使占用CPU时间极少），且注重函数间调用关系</p>
<pre name="code" class="cpp:showcolumns">
<pre name="code" class="shell:nogutter:collapse">
<pre name="code" class="shell"># amplxe-cl -collect-with runss -knob interval=8 -knob collectSamplesMode=stack -- ./primes.icc
Determining primes from 1 - 100000
Found 9592 primes
Using result path `/home/peter/problem_report/r000runss'
Executing actions 75 % Generating a report
Summary
-------

Elapsed Time:  0.883
CPU Time:      2.080
Executing actions 100 % done               

# amplxe-cl -report hotspots
Using result path `/home/peter/problem_report/r000runss'
Executing actions 75 % Generating a report
Function    Module      CPU Time
----------  ----------  --------
findPrimes  primes.icc  2.080
Executing actions 100 % done                                                   

# amplxe-cl -report gprof-cc
Using result path `/home/peter/problem_report/r000runss'
Executing actions 75 % Generating a report
Index  % CPU Time:Total  CPU Time:Self  Children  Name           Index
-----  ----------------  -------------  --------  -------------  -----
[0]    100.0             0.0            2.08      clone          [0]
                         0              2.080      start_thread  [1]

                         0              2.080      clone         [0]
[1]    100.0             0.0            2.08      start_thread   [1]
                         2.080          2.080      findPrimes    [2]

                         2.080          2.080      start_thread  [1]
[2]    100.0             2.08           0.0       findPrimes     [2]

[3]    0.0               0.0            0.0       _start         [3]
                         0              0          main          [4]

                         0              0          _start        [3]
[4]    0.0               0.0            0.0       main           [4]

Index by function name

Index  Function
-----  ------------
[3]    _start
[0]    clone
[2]    findPrimes
[4]    main
[1]    start_thread
Executing actions 100 % done</pre>
</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2012/01/20/vtunetm-amplifier-xe-gprof/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VTune(TM) Amplifier XE 在 Ubuntu* 11.04 上使用碰到的问题</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/12/15/vtunetm-amplifier-xe-ubuntu-1104/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/12/15/vtunetm-amplifier-xe-ubuntu-1104/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 06:59:39 +0000</pubDate>
		<dc:creator>Peter Wang (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA["VTune Amplifier XE"]]></category>
		<category><![CDATA[Ubuntu 11.04]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/12/15/vtunetm-amplifier-xe-ubuntu-1104/</guid>
		<description><![CDATA[软件性能调试工具在Ubuntu* 11.04上碰到的问题，及解决办法]]></description>
			<content:encoded><![CDATA[<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/12/Ubuntu11.04.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/12/Ubuntu11.041.jpg"></a>在Ubuntu* 11.04上通过Sudo安装完Intel(R) VTune(TM) Amplifier XE 2011。整个过程没有任何报错信息。</p>
<p>使用amplxe-gui，调用工具的图形界面，创建一个项目，选择目标的应用程序。然后通过工具对目标程序进行热点分析（Hotspots Analysis）, 意外得到出错信息。</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/12/Ubuntu11.041.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/12/Ubuntu11.041.jpg" alt="" width="766" height="272" /></a></p>
<p>同样的问题也会发生在并行性分析（Concurrency Analysis）和锁及等待分析(Locks And Waits Analysis)。</p>
<p>究其原因，Ubuntu* 10.10以后的版本对于一个普通用户在使用ptrace追踪进程时，仅允许被追踪进程的父进程ptrace 应用程序的进程。</p>
<p>而VTune Amplifier XE并非应用程序的父进程。怎么去除这个限制呢？根据出错信息的提示：</p>
<p>$sudo echo 0 &gt; /proc/sys/kernel/yama/ptrace_scope</p>
<p>bash: /proc/sys/kernel/yama/ptrace_scope: Permission denied</p>
<p>应该使用：</p>
<p>$echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope</p>
<p>[sudo] password for peter:</p>
<p>0</p>
<p>这样, VTune(TM) Amplifier XE 就可以正常工作了。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/12/15/vtunetm-amplifier-xe-ubuntu-1104/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>密码保护：使用VTune(TM) Amplifier XE收集Java程序的性能数据</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/11/28/vtunetm-amplifier-xejava/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/11/28/vtunetm-amplifier-xejava/#comments</comments>
		<pubDate>Mon, 28 Nov 2011 06:53:15 +0000</pubDate>
		<dc:creator>Peter Wang (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[VTune amplifier Java]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/11/28/vtunetm-amplifier-xejava/</guid>
		<description><![CDATA[无法提供摘要。这是一篇受保护的文章。]]></description>
			<content:encoded><![CDATA[<form action="http://software.intel.com/zh-cn/blogs/wordpress/wp-pass.php" method="post">
<p>这是一篇受密码保护的文章。您需要提供访问密码：</p>
<p><label for="pwbox-400009250">密码：<br />
<input name="post_password" id="pwbox-400009250" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="提交" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/11/28/vtunetm-amplifier-xejava/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>何为高精度CPU时间的性能数据收集？</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/10/09/cpu-4/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/10/09/cpu-4/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 07:04:09 +0000</pubDate>
		<dc:creator>Peter Wang (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[CPU Time]]></category>
		<category><![CDATA[VTune Amplifier]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/10/09/cpu-4/</guid>
		<description><![CDATA[Tips for using VTune(TM) Amplifier XE]]></description>
			<content:encoded><![CDATA[<div>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/10/h-accurate1.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/10/h-accurate2.jpg"></a>Intel® VTune™ Amplifier XE主要包含二种类型的性能数据收集：一种是用户模式下的数据收集和追踪分析, 还有一种就是基于硬件PMU事件的采样 （EBS）。</p>
<p>本文仅讨论的第一种情形（热点分析，并行分析，锁和等待分析），并不需要管理员权限（administrator privilege），缺省使用的是OS timer作为中断源。如 CPU Sampling Interval 10ms 作为预制的delta。但是其本质是粗略的，难以精确到 晶振的ticks。另外的问题是，由于中断源的级别较低，中断也可能被其他的中断屏蔽，影响到精度。</p>
<p>最近的产品更新，针对以上的“瑕疵”，缺省使用新的中断源-访问Event Tracing for Windows (ETW)。 ETW是一种内核级别的编程接口，追踪内核/程序的性能和提供Log文件。</p>
<p>即使你的用户账户具有管理员权限，在使用工具过程中 都必须以“Run as administrator”启动 以下方式之一 ：1）devenv (Viusal Studio 的集成环境) 2）amplxe-gui  3) cmd (命令行) 。否则的话，就会出现以下警告信息，并且数据收集是使用OS Timer作为中断源的（不过结果还是可用的）。</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/10/h-accurate1.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/10/h-accurate1.jpg" alt="" width="362" height="51" /></a></p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/10/h-accurate2.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/10/h-accurate2.jpg" alt="" width="676" height="181" /></a> </p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/10/09/cpu-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用Uncore Events 在Sandy Bridge处理器上测量内存访问带宽</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/28/uncore-events-sandy-bridge/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/28/uncore-events-sandy-bridge/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 06:35:33 +0000</pubDate>
		<dc:creator>Peter Wang (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[vtune]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/28/uncore-events-sandy-bridge/</guid>
		<description><![CDATA[Techincal notes about using new events in SNB]]></description>
			<content:encoded><![CDATA[<div>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band1.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band2.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band3.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band21.jpg"></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band31.jpg"></a>1.  什么是Uncore 事件?</p>
</div>
<div>
<p>VTune（TM）Amplifier XE 工具利用CPU上的Performance Monitor Unit (PMU) 上的性能事件计数器来测定影响程序性能的事件，从而定位到产生问题的代码，继而做相应的改善。在多核的CPU架构上，除了以前的PMU上的Events，还有一些监控内核间交互，内核和系统交互的事件（非CPU事件），称之为Uncore event。需要注意的是：你可以在系统平台上收集Uncore Event 的数据 – 但是你不能定位这些数据到具体的进程、线程、模块、函数及源代码，也即数据为进程运行过程中统计数据。为排除来自其他应用程序的干扰，尽可能关闭无关的后台程序。</p>
</div>
<div>
<p>2.  Intel® Sandy Bridge 处理器上的 Uncore 事件</p>
</div>
<div>
<p>那么在新一代的SandyBridge处理器上有什么样的Uncore 事件呢？</p>
<p>首先，我们来看有哪些与内核无关的事件，如图：</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band1.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band1-300x286.jpg" alt="" width="300" height="286" /></a></p>
<p>主要有三种：共享的L3缓存；负责内核间交互的QPI；负责各个核内存的控制IMC</p>
<p>现在的VTune™ Amplifier XE 2011 Update 5 支持所有OFFCORE events, 可用命令显示</p>
<p>amplxe-runsa -event-list | grep OFFCORE</p>
<p>主要是对L3缓存的分析，进而得到访问主存的频度，也即内存带宽。</p>
<p>通过事件，</p>
<p>OFFCORE_RESPONSE.ANY_REQUEST.LLC_MISS_LOCAL.DRAM_0</p>
<p>OFFCORE_RESPONSE.ANY_REQUEST.LLC_MISS_LOCAL.DRAM_1</p>
<p>MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS_PS (非Uncore event, Cross-snoop misses in one core)</p>
</div>
<div>
<p>3.  针对Intel® Sandy Bridge processors，怎么使用预定义的分析类型</p>
</div>
<div>
<p>一般来说，针对Sandy Bridge处理器， VTune™ Amplifier XE提供预订有关SNB的分析类型。</p>
<blockquote><p>[peter@snb01 config]$ amplxe-cl -collect-list | grep snb</p>
<p>snb_access-contention           Intel(R) Microarchitecture Code Name Sandy Bridge - Access Contention</p>
<p><strong>snb_bandwidth</strong>                   Intel(R) Microarchitecture Code Name Sandy Bridge - Bandwidth</p>
<p>snb_branch-analysis             Intel(R) Microarchitecture Code Name Sandy Bridge - Branch Analysis</p>
<p>snb_client                      Intel(R) Microarchitecture Code Name Sandy Bridge - Client Analysis</p>
<p>snb_core-port-saturation        Intel(R) Microarchitecture Code Name Sandy Bridge - Core Port Saturation</p>
<p>snb_cycles-uops                 Intel(R) Microarchitecture Code Name Sandy Bridge - Cycles and uOps</p>
<p>snb_general-exploration         Intel(R) Microarchitecture Code Name Sandy Bridge - General Exploration</p>
<p>snb_loop-analysis               Intel(R) Microarchitecture Code Name Sandy Bridge - Loop Analysis</p>
<p>snb_memory-access               Intel(R) Microarchitecture Code Name Sandy Bridge - Memory Access</p>
<p>snb_port-saturation             Intel(R) Microarchitecture Code Name Sandy Bridge - Port Saturation</p></blockquote>
<p>所以用户可以快速使用命令行收集数据 （也可以工作在图形界面上收集）， 如：</p>
<p>amplxe-cl -collect snb_bandwidth -duraton 10 -- ./matrix</p>
<p>结果可以用amplxe-gui来浏览：</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band2.jpg"></a></p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band21.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band21.jpg" alt="" width="689" height="419" /></a></p>
<p>这样可以知道不同时间的内存访问的带宽，还可以选择某一个时间段分析，及深入到源代码行。</p>
</div>
<div>
<p>4. 怎么使用直接Uncore事件</p>
<p>如果不用预定义的分析类型，直接使用事件来收集性能数据:</p>
<p>amplxe-runsa -duration 10 --event-config="OFFCORE_RESPONSE.ANY_REQUEST.LLC_MISS_LOCAL.DRAM_0,OFFCORE_RESPONSE.ANY_REQUEST.LLC_MISS_LOCAL.DRAM_1,MEM_LOAD_UOPS_MISC_RETIRED.LLC_MISS_PS:,CPU_CLK_UNHALTED.THREAD:,CPU_CLK_UNHALTED.REF_TSC:,INST_RETIRED.ANY:" -- ./matrix</p>
<p>你可以产生数据，但是没有Formula (内部公式) 去计算 Bandwidth, GB/sec</p>
<p>所见的是这些Event count，大约知道何时、什么代码内存访问较多，但没有带宽的量化指标。和以前的方法一致，根据指标找相应的代码。</p>
<p><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band31.jpg"><img src="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band31.jpg" alt="" width="699" height="405" /></a><a href="http://software.intel.com/zh-cn/blogs/wordpress/wp-content/uploads/2011/09/band3.jpg"></a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/28/uncore-events-sandy-bridge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>使用amplxe-cl命令报告热点函数调用栈信息</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/09/15/amplxe-cl-2/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/09/15/amplxe-cl-2/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 08:40:28 +0000</pubDate>
		<dc:creator>Peter Wang (Intel)</dc:creator>
				<category><![CDATA[并行计算]]></category>
		<category><![CDATA[英特尔® 软件网络 2.0]]></category>
		<category><![CDATA[amplxe-cl callstacks]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/09/15/amplxe-cl-2/</guid>
		<description><![CDATA[New feature for amplxe-cl]]></description>
			<content:encoded><![CDATA[<p>Intel(R) VTune(TM) Amplifier XE 的命令行amplxe-cl可以用在性能的自动化测试(大多数情况由脚本调用)。关于使用的例子可以参阅我的这篇博客 - <a href="http://software.intel.com/zh-cn/blogs/2010/11/10/amplxe-cl/">http://software.intel.com/zh-cn/blogs/2010/11/10/amplxe-cl/</a>。</p>
<p>遗憾的是，早期的版本不支持在报告中输出热点函数的调用栈信息。现在VTune(TM) Amplifier XE Update 5 命令行的报告增加了此选项。</p>
<p>amplxe-cl -rept-list<br />
Executing actions  0 % Gathering available reports<br />
vailable reports:<br />
<strong>callstacks</strong>                                        predefined<br />
gprof-cc                                          predefined<br />
hotspots                                          predefined<br />
hw-events                                         predefined<br />
perf-detail                                       predefined<br />
perf                                              predefined<br />
pmu-events                                        predefined<br />
sfdump                                            predefined<br />
summary                                           predefined<br />
top-down                                          predefined<br />
wait-time                                         predefined   </p>
<p>由此用户不仅可以输出热点函数的信息，还可以输出热点函数调用者的信息。</p>
<p>amplxe-cl -report callstacks -r r000hs |more<br />
Using result path `C:\zwang\Demos\tachyon\vc8\find_hotspots_Win32_Debug\r000hs'<br />
Executing actions 75 % Generating a report<br />
Function                      Call Stack                   Module             CPU Time:Self  CPU Time:Total<br />
----------------------------  ---------------------------  -----------------  -------------  --------------<br />
render_one_pixel                                           find_hotspots.exe  0.078          96.11%<br />
                              draw_trace                   find_hotspots.exe  0.078          96.11%<br />
                              thread_trace                 find_hotspots.exe</p>
<p>                              trace_shm                    find_hotspots.exe</p>
<p>                              trace_region                 find_hotspots.exe</p>
<p>注意：此功能只对User-mode Sampling的分析类型有效。而Hardware Event-based sampling是不产生调用栈信息的。</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/09/15/amplxe-cl-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

