首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在二进制文件而不是整个二进制文件中的某些代码片段上使用vtune?

是否可以在二进制文件而不是整个二进制文件中的某些代码片段上使用vtune?
EN

Stack Overflow用户
提问于 2012-08-01 07:03:50
回答 2查看 1.4K关注 0票数 2

我正在将一个小型库的使用添加到一个现有的大型软件中,并且想要分析(更详细地分析,而不是简单地使用rdtsc()或gettimeofday调用)小型库的开销和它的属性。使用像rdtsc()这样的东西,我可以获得调用我的库函数的延迟的感觉,但是我不能做延迟属性,除非我还能够看到分支预测得不好,缓存不能正常工作,我研究了PAPI,因为我想象着在更大的二进制文件的上下文中,我的库中的某个特定硬件事件进出我的库中的例程,但似乎我需要一个特定的内核模块才能让PAPI为我工作(Linux2.6.18 && Intel Xeon5570)...there是Vtune,它是专门针对英特尔处理器的,但它似乎会分析整个二进制文件的性能,而不是特定的代码片段(对我的库的3-4个调用)。

有没有一种方法可以让我使用Vtune来实现我的目标,或者是可以让我在不打内核补丁的情况下访问这些计数器的方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-01 08:41:04

无法在vtune中定义开始录制的入口点。

但是,您可以做的是在不记录的情况下启动跟踪,然后当您希望命中库时,启动跟踪并让它记录调用。调用之后,您可以再次停止它,现在可以使用vtune中的自上而下选项卡来查找库调用。

有了它,您应该能够看到有关调用的所有信息,以及每次调用所花费的时间。

如果您希望确保仅在调用处于活动状态时进行跟踪,则可以在gdb下启动应用程序,并在访问和离开要检查的函数时插入断点,然后适当地启动和停止分析器。

票数 3
EN

Stack Overflow用户

发布于 2012-08-03 15:02:27

Matias是对的-您可以启动暂停的评测( VTune中的“start paused”),然后在您的程序中使用VTune应用编程接口中的__itt_pause / __itt_resume API,将数据收集限制在感兴趣的代码区域。

您可能还希望在项目属性中将“目标持续时间类型”设置为“低于一分钟”-这将使采样更加细粒度(10 KHz而不是默认的1 KHz频率)。或手动调整要收集的事件列表中的Sample After值。当您想要分析特定的内容时,后者通常更有用,比如预测错误的分支。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11750297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档