关于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
参数解释:
(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