Vtune报告在任何已知模块之外

时间:2013-04-18 02:25:53

标签: vtune

我正在为我的linux应用程序热点收集使用英特尔(R)VTune(TM)放大器XE 2013 Update 5(内部版本为274450),但该报告称“[任何已知模块之外]”大部分时间都在消耗,所以我想获得有关未知模块的更多信息。

当我阅读vtune放大器的发行说明时,它说“热点列表可能包含”在任何已知模块之外“在内核早于2.6.20(200233501)的系统上”,但我的linux内核是“2.6。 32“,对此有何想法?

3 个答案:

答案 0 :(得分:2)

检查您的程序是否未动态生成代码(即不是JIT-ing)。您可能还希望将分组切换到“模块/代码位置/调用堆栈”,并查看VTune无法将哪些虚拟地址映射到任何已知模块。

答案 1 :(得分:1)

我过去也一直在遭遇这个问题,如果你不知道为什么会这样,那就非常令人沮丧。

2周前我安装了Ubuntu 13.04和vtune更新14,因为我可以看到(再次)我的代码中发生了什么,所以我很高兴。

在我的Ubuntu上做了一些更新后,vtune开始显示你的问题

  • 我安装了内核源代码..没有帮助..

  • 我重新安装了驱动程序,没有帮助。

  • 我重新安装了intel vtune ..没有帮助。

然后我决定在root下运行,你知道什么......它有效;不再是“在任何已知模块之外”。我切换回我的普通用户,它停止工作。我切换回我的根,它的工作原理。所以也许是某种访问问题。

也许你可以试试这个。

答案 2 :(得分:0)

kptr_restrict可能有一些内核隐藏地址,您可以查看“ / proc / sys / kernel / kptr_restrict”的值:

kptr_restrict = 0,提供的内核地址没有限制(推荐)。

kptr_restict = 1,如果当前用户具有CAP_SYSLOG功能,则提供地址。

kptr_restrict = 2,无论当前用户具有什么特权,内核地址都被隐藏。

您可以在运行跟踪之前使用此选项:

sysctl -w kernel.kptr_restrict = 0

此处有更多详细信息:https://software.intel.com/en-us/vtune-help-enabling-linux-kernel-analysis

希望这会有所帮助!