linux下通过命令行使用Vtune统计处理器微体系结构特征

        关于Vtune的介绍见官网,它可以调用intel处理器的底层performence counter,统计类似TLB miss、L1 cache miss等微体系结构信息。用界面的方式使用Vtune比较方便,但是要同时控制多台机器上的Vtune并抓取相应数据时,界面方式就不行了。使用shell命令行方式非常方便。可以用ssh无密码登录到其他节点,几乎同时调用vtune并开始统计。

        vtune统计微体系结构信息分两部分,收集原始数据和对收集的数据做分析

一,收集原始数据:

amplxe-cl -collect custom-analysis-0 -target-duration-type medium  -result-dir XXX/path_to_result  $可执行文件

参数解释:

(1)custom-analysis-0:  事件集合,比如里面包括TLB miss rate、LLC miss rate等等信息,后面我会贴出其文件内容。-collect是指定要收集的事件,也可以是某个文件,但是要以一定格式,具体后面会讲。

(2)-target-duration-type:要统计的可执行文件运行的大约时间,分三个等级,small/medium/large,分别代表0-15min,15min-3h,3h-24h,具体解释可以去Vtune官网找。默认small,注意:如果使用默认值,但是你的可执行文件运行时间超过15min,就会出问题。vtune会在15min时自动收集一轮数据,如果你要对原始数据还要用report命令进行统计,vtune会告诉你找不到原始数据。

(3)-result-dir:原始数据存放的路径,不要具体到文件,到目录即可。

(4)可执行文件:你要统计的可执行文件,可以是脚本,但要用“./”强制运行,不然Vtune不会认为脚本是可执行文件。当然,chmod +7 XXX也是必须的。

    以上命令是要统计针对可执行文件,统计custom-analysis-0中包含的事件的数据,并把原始数据放到某个指定路径下,而且15min<可执行文件执行时间<3h


二,对原始数据进行处理,并生成报告


amplxe-cl -report summary -result-dir XXX/path_to_result XXX/path_to_report

参数解释:

(1)-report:你要报告的事件,summary表示要生成总的报告。还有其他参数请参看官网。

(2)-result-dir :和上面相同

(3)重定向>:默认是输出在标准输出上,为了保存结果,可以指定某个文件,注意这里是文件,不是目录。


三,附加说明:

(1)vtune可以针对进程pid进行统计,命令如下:

amplxe-cl -collect custom-analysis-0 -target-duration-type medium  -result-dir  XXX/path_to_result  -target-pid $PID

(2)vtune在收集过程中如果被强制kill(或者Ctrl+c),然后再次启动,经常会报错:PMU被占用。

解决办法:目前我只有重启机器

(3)关于custom-analysis-0配置文件的介绍:

在你安装vtune的目录的相应路径(例如/root/.intel/amplxe/analysis_type/)下,放置配置文件custom-analysis-0.cfg(统计命令里可以不加cfg后缀)。具体内容摘录如下:


<?xml version='1.0' encoding='UTF-8'?>
  2 
  3 <bag xmlns:boolean="http://www.w3.org/2001/XMLSchema#boolean" xmlns:int="http://www.w3.org/2001/XMLSchema#int">
  4  <internal>
  5   <name>Micro test</name>
  6   <description>My comments...</description>
  7   <abbreviation>runsa0</abbreviation>
  8   <alias>custom-analysis-0</alias>
  9   <property name="helpId">intel.phe.configs.new_cpu_event_collector_analysis_f1105</property>
 10  </internal>
 11  <prerequisites/>
 12  <knobs/>
 13  <analysis>
 14   <collector id="runsa">
 15    <int:collectorKnob knob="ringBuffer">0</int:collectorKnob>
 16    <boolean:collectorKnob knob="systemWideContextSwitch">false</boolean:collectorKnob>
 17    <boolean:collectorKnob knob="igfxFtraceEvents">false</boolean:collectorKnob>
 18    <boolean:collectorKnob knob="eventInfo">true</boolean:collectorKnob>
 19    <boolean:collectorKnob knob="enablePEBSCollection">false</boolean:collectorKnob>
 20    <boolean:collectorKnob knob="enableVTSSCollection">false</boolean:collectorKnob>
 21    <boolean:collectorKnob knob="collectLBRCallstack">false</boolean:collectorKnob>
 22    <boolean:collectorKnob knob="enableLBRCollection">false</boolean:collectorKnob>
 23    <boolean:collectorKnob knob="collectCallCounts">false</boolean:collectorKnob>
 24    <collectorKnob knob="pmuEventConfig">BR_INST_RETIRED.…… S:sa=2000000</collectorKnob>
 25    <collectorKnob knob="chipsetEventConfig"/>
 26    <boolean:collectorKnob knob="useEventBasedCounts">false</boolean:collectorKnob>
 27    <boolean:collectorKnob knob="useCountingMode">false</boolean:collectorKnob>
 28    <boolean:collectorKnob knob="basicBlockAnalysis">true</boolean:collectorKnob>
 29    <boolean:collectorKnob knob="collectMemBandwidth">false</boolean:collectorKnob>
 30    <boolean:collectorKnob knob="collectUserTasksMode">false</boolean:collectorKnob>
 31    <collectorKnob knob="gpuCounters">none</collectorKnob>
 32    <int:collectorKnob knob="gpuSamplingInterval">1000</int:collectorKnob>
 33    <boolean:collectorKnob knob="gpuDX">false</boolean:collectorKnob>
 34    <boolean:collectorKnob knob="collectGpuOpenCl">false</boolean:collectorKnob>
 35    <boolean:collectorKnob knob="collectGpuCm">false</boolean:collectorKnob>
 36    <collectorKnob knob="eventMode">all</collectorKnob>
 37    <collectorKnob knob="cswitchMode">inactive</collectorKnob>
 38    <boolean:collectorKnob knob="forceMuxOff">false</boolean:collectorKnob>
 39    <boolean:collectorKnob knob="loadPebsData">true</boolean:collectorKnob>
 40    <collectorKnob knob="isPowerVRDataAvailable">no</collectorKnob>
 41    <boolean:collectorKnob knob="cpuGpuUsageData">false</boolean:collectorKnob>
 42   </collector>
 43  </analysis>
 44 </bag>

该文件不需要手动编写,打开用户界面选中某些要统计的信息后保存会自动生成。

然后将其拷贝到其他节点的相应目录下即可。

    如有相关问题,请参看vtune官网。


参考资料:

1. https://software.intel.com/en-us/node/497138

2. https://software.intel.com/en-us/intel-vtune-amplifier-xe

3. http://en.wikipedia.org/wiki/VTune

你可能感兴趣的:(linux下通过命令行使用Vtune统计处理器微体系结构特征)