C++ 在幽灵被修复后仍然可以进行分析吗?
几个星期以来,我一直在尝试分析一个数值软件,但我无法得到有用的结果。 我分析的代码产生了一个巨大的函数(_属性__((扁平)),它是由许多内联函数和对std::exp/std::log/std::pow的一些调用创建的。此函数位于共享库中,并通过dlopen()加载。 我用过C++ 在幽灵被修复后仍然可以进行分析吗?,c++,linux,g++,profiling,C++,Linux,G++,Profiling,几个星期以来,我一直在尝试分析一个数值软件,但我无法得到有用的结果。 我分析的代码产生了一个巨大的函数(_属性__((扁平)),它是由许多内联函数和对std::exp/std::log/std::pow的一些调用创建的。此函数位于共享库中,并通过dlopen()加载。 我用过 google CPU探查器(挂起在第一个fork()中(被SIGPROF中断,重新启动,中断和…)——与g++选项-pg的问题相同) linux工具性能(导致机器重新启动,我抱怨,他们升级了操作系统(CENTOS 6.5
- google CPU探查器(挂起在第一个fork()中(被SIGPROF中断,重新启动,中断和…)——与g++选项-pg的问题相同)
- linux工具性能(导致机器重新启动,我抱怨,他们升级了操作系统(CENTOS 6.5)。结果只突出显示了上述巨大功能中的两条汇编指令。我没有读取准确事件源(*:ppp)的权限
- 一些旧版本的vtune(操作困难,结果不可靠,未加载硬件驱动程序)
- sprof(结果不会告诉我任何事情,因为只有一个函数需要分析——如果避免使用属性展平,则行为完全不同)
使用-fno省略帧指针进行编译?什么特别让您认为您的问题与spectre缓解措施有关?“省略帧指针”可能会混淆许多调试和分析工具,但这与spectre的问题完全是正交的。“spectre修复后是否仍可以进行分析?”-注意:spectre尚未“修复”。有些变化已经缓解,但已修复?不,结果没有告诉我任何事情。有时,我试图分析的函数只消耗一小部分,而下一个会话则消耗更大的一部分。我没有得到任何关于代码行的信息,这些代码行很昂贵(请记住,有两条汇编指令被突出显示为热点,其他所有内容都是空白的)。分析会话总是在相同的输入数据上工作,因此它应该是可重复的。另外,在我看来,google profiler不再产生任何一致的结果,这是对spectre缓解的暗示。也许你只是不知道如何正确使用分析工具,或者不知道如何正确解释它们的结果。不是说这是问题,但可能是。为了它的价值;我最近在我的CentOS 7.8工作站上成功地使用了
perf
,该工作站启用了所有spectre etc缓解措施。您认为您的问题与spectre缓解措施有关的具体原因是什么?“省略帧指针”可能会混淆许多调试和分析工具,但这与spectre问题完全正交。“修复幽灵后仍可以进行分析吗?”-注意:幽灵尚未“修复”“。某些变化已被缓解,但已修复?不,结果没有告诉我任何事情。有时,我试图分析的函数只消耗一小部分,而下一个会话则消耗更大的一部分。我没有得到任何关于代码行的信息,这些代码行很昂贵(请记住,有两条汇编指令被突出显示为热点,其他所有内容都是空白的)。分析会话总是在相同的输入数据上工作,因此它应该是可重复的。另外,在我看来,google profiler不再产生任何一致的结果,这是对spectre缓解的暗示。也许你只是不知道如何正确使用分析工具,或者不知道如何正确解释它们的结果。不是说这是问题,但可能是。为了它的价值;最近,我在CentOS 7.8工作站上成功地使用了perf
,该工作站启用了所有spectre etc缓解措施。