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

Pal*_*han 2 c linux performance profiling intel-vtune

我正在将一个小型库的使用添加到一个现有的大型软件中,并希望分析(在查找器详细信息中,而不仅仅是在输入和输出rdtsc()或gettimeofday调用中)开销和它是小型库的归属.使用像rdtsc()之类的东西我可以了解调用我的库函数所具有的延迟,但我不能做延迟归因,除非我还能看到分支是否被预测得不好,缓存是否正常工作等等.我查看了PAPI,因为我想到在更大的二进制文件的上下文中查看进出模块中的例程的某些硬件事件,但似乎我需要一个特定的内核模块供PAPI为我工作(Linux 2.6. 18 && Intel Xeon 5570)...有专门针对英特尔处理器的Vtune,但看起来它可以分析整个二进制文件的性能而不是特定的代码片段(3-4次调用到我的库中).

有没有办法让我使用Vtune作为我的目标,或者可能让我可以访问这些计数器而无需修补我的内核?

Ale*_*rov 5

Matias是对的 - 您可以开始暂停分析(VTune中的"Start paused"),然后在程序中使用来自VTune API的__itt_pause/__itt_resume API将数据收集限制在感兴趣的代码区域.

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