-->

是否有可能使用某些代码片段VTUNE在二进制,而不是一个完整的二进制?(Is it possible

2019-07-30 17:06发布

我加入一个小型图书馆的使用量要大现有的软件,并想分析(取景器中详细不仅仅是在进出RDTSC()或gettimeofday的调用)的开销和它的小型图书馆的归属。 使用像RDTSC()我可以得到延迟的感觉,叫我的图书馆功能都有,但除非我也能看到是否分支没有被预测好,缓存心不是正常工作,等我不能做延迟归因..我看着PAPI像我想象在看某个硬件事件进入和流出较大的二进制文件的范围内我的图书馆例行的,但似乎我需要一个特定的内核模块PAPI为我工作(Linux 2.6的。 18 &&英特尔至强5570)...有V调谐这是专门针对英特尔处理器,但它看起来像它的东西,这将配置文件中的整个二进制的性能,而不是具体的代码段(3-4调用到我的图书馆)。

有没有办法对我来说,使用V调谐为我的目标,或可能的东西,可以给我访问这些计数器,而不必修补我的内核?

Answer 1:

这是不可能的VTUNE定义一个入口点开始录制。

但是,你可以做什么,是开始跟踪记录没有,然后当你希望打你的图书馆,你就开始跟踪并让它记录的调用。 来电后,您可能会再次停止它,现在可以使用VTUNE上下标签查找库调用。

有了它,你应该能够看到所有有关通话信息,并在每个花费的时间。

如果你想确保你只在呼叫有效跟踪,你可能会在gdb下启动应用程序和访问,离开要进行检查,然后启动和停止适当分析器的功能时,插入断点。



Answer 2:

马蒂亚斯是正确的 - 你可以开始分析暂停(在VTune™可视化发言“开始暂停”),然后在你的程序中使用__itt_pause /从VTune™可视化API __itt_resume API数据收集限制到感兴趣的代码区域。

您也可以设置“目标持续时间类型”为“不到一分钟”在项目属性 - 这使得采样更精细(10千赫,而不是默认的1 kHz频率)。 或手动调节样品中的事件收集列表值之后。 如果要分析具体的预测失误的一样东西的分支,后者往往更加有用。



文章来源: Is it possible to use vtune on certain code snippets in a binary and not an entire binary?