我正在为我的linux应用程序热点收集使用英特尔(R)VTune(TM)放大器XE 2013 Update 5(内部版本为274450),但该报告称“[任何已知模块之外]”大部分时间都在消耗,所以我想获得有关未知模块的更多信息。
当我阅读vtune放大器的发行说明时,它说“热点列表可能包含”在任何已知模块之外“在内核早于2.6.20(200233501)的系统上”,但我的linux内核是“2.6。 32“,对此有何想法?
答案 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
希望这会有所帮助!