使用七 (试用Counter Monitor )

简述:

试用VTune的CounterMonitor

仍然使用之前的gzip.exe做测试, 收集Counter Monitor 的到的数据结果

 

步骤:

1.  创建新的Activity, 选择Counter Monitor Wizard

 

 

2.打开gzip.exe文件,同时在Command line arguments 的文本框中打入参数 -f testfile.dat

同时勾选中Modify default configuration when done whith wizard checkbox

使用七 (试用Counter Monitor )_第1张图片

 

下一步, 下一步,至如下页面勾选中Collect Sampling ...

使用七 (试用Counter Monitor )_第2张图片

 

点击完成

 

3. 之后进入如下界面,勾选中Sampling

使用七 (试用Counter Monitor )_第3张图片

 

选中Sampling, 进入Sampling的 Configuration, 选中Dont't Calibrate ....

 

点击确定

 

选中Data Collectors 中的Counter Monitor, 点击Configuration进入

选中Performance Objects 中的LogicalDisk, 点击Add

选中C:

选中Disk Reads/sec  ,    Disk Writes/sec

使用七 (试用Counter Monitor )_第4张图片

点击Add

 

最后只保留C:盘的部分

 

点击确定 --> 确定。

 

4. 测试结束后,出现如下小窗口

选中Counter Monitor Results  --> View

使用七 (试用Counter Monitor )_第5张图片

 

1) 得到系统Read的平均时间为 1.015 , 其中write远大于write的时间 可以看出这个程序是个以文件为主的

 

 

5. Counter Monitord Data相关的Sampling Data 事件取样

选中 Select Range to Zoom/Drill Down 图标

如下图 向右拖拉,

 

点击Drill Down to Correlate Sampling Data View icon

 

于是可以看到上面设定的时间段内的Sampling Data

使用七 (试用Counter Monitor )_第6张图片

 

1) 实验过程中发现VTune可以自己吧测试程序在指令层进行性能剖析,对于细化研究程序是很有用的。Vtune不仅对应用程序本身取样,还对应用程序中调用的系统库函数进行取样,还对用到的设备驱动进行取样

2) 对Intel 的VTune中Sampling是如何同硬件系统结合,的获取实验数据的感到好奇。

 使用七 (试用Counter Monitor )_第7张图片

分析器收集的数据,

~ 在内存中的指令运行地址

~ 操作系统进程或线程ID

~ 在此地址装入的可执行模块

 

 

VTune使用(五 ~ 七) 实验回顾:

1)Sampling提供了在进程级别的开销的数据,在进程模块层查看数据,这是Call Graph没有的,具体两者功能如下,

/*********************************************************************************/

Call Graph 调用曲线图

通过分析程序运行时函数的入口点和出口点,生成一张调用图,并且确定调用顺序,显示关键路径。他显示线程创建,函数执行,以及他们之间的父子继承关系,分析关于程序流程的示意图,帮助开发者快速识别主要功能和调用顺序。主要包含如下几个部分,

~ 程序函数级的框架结构

~ 某个函数被某特定区域调用的次数

~ 每个函数消耗的时间

~ 处于关键路径上的函数

Sampling 取样功能

可以帮助开发者分辨程序中最消耗时间的函数和模块,并给出操作系统和应用程序详细视图,它能够寻找到程序中的热点区域,最好时间的模块、函数、代码行和汇编指令,并提供进程、线程、模块、函数以及代码等不同层次的各种视图,并在表格内将具体参数列出。主要功能内容如下,

~ 通过统计的方法来找到Hotspots

~ Sampling收集器周期性的中断处理器以获取可执行的程序信息

~ 采样的两种方式:基于时刻的采样(TBS)由操作系统定时服务和每n个处理器时钟点触发;基于事件的采样 (EBS)由指处理器相关事件,如:L2级缓存遗失、分支误预测、浮点指令过时(retired)等等事件所触发。

/*********************************************************************************/

对于LINPACK这个程序,应当参考Call Graph 中体现的在daxpy 函数上开销较大,应该主要优化这个函数

 

2)因为CPU可能被非测试程序使用,导致测试程序的结果不准确,素以在Sampling Data之前要看一下在Counter Monitor中CPU的使用率

 

3)Sampling 和 call graph 两者开销不大,通常设定为1000,这样使得取样完整性和取样开销之间做权衡,其中取样产生的时间开销不到1%, 切对指令无要求,不必为取样而对程序代码做任何改动。

 

4)Sampling根据一些系统Event或钟点触发来得到数据结果,更趋向于体现系统层面的性能, Call Graph主要是基于函数调用,在函数层面的分析,是基于程序内部函数调用

你可能感兴趣的:(使用七 (试用Counter Monitor ))