我正在为我的 linux 应用程序热点收集使用 Intel(R) VTune(TM) Amplifier XE 2013 Update 5 (build 274450),但报告说“[在任何已知模块之外]”消耗大部分时间,所以我想获取有关未知模块的更多信息。
当我阅读 vtune Amplifier 的发行说明时,它说“热点列表可能包含”在内核早于 2.6.20 (200233501) 的系统上的“任何已知模块之外””,但我的 linux 内核是“2.6.32”,有什么想法吗?
我正在为我的 linux 应用程序热点收集使用 Intel(R) VTune(TM) Amplifier XE 2013 Update 5 (build 274450),但报告说“[在任何已知模块之外]”消耗大部分时间,所以我想获取有关未知模块的更多信息。
当我阅读 vtune Amplifier 的发行说明时,它说“热点列表可能包含”在内核早于 2.6.20 (200233501) 的系统上的“任何已知模块之外””,但我的 linux 内核是“2.6.32”,有什么想法吗?
检查您的程序是否没有即时生成代码(即不是 JIT-ing)。您可能还想将分组切换到“模块/代码位置/调用堆栈”并查看 VTune 无法将哪些虚拟地址映射到任何已知模块。
我过去也曾遭受过这个问题的困扰,如果您不知道为什么会这样,那将非常令人沮丧。
2 周前,我安装了 Ubuntu 13.04 和 vtune update 14,我欣喜若狂,因为我可以(再次)看到我的代码中发生了什么。
在我的 Ubuntu 上做了一些更新后,vtune 开始显示你的问题
我安装了内核源..没有帮助..
我重装了驱动,没用。
我重新安装了英特尔 vtune .. 没有帮助。
然后我决定在root下运行,你知道什么......它有效;不再有“在任何已知模块之外”。我切换回我的普通用户,它停止工作。我切换回我的根目录,它可以工作。所以也许是某种访问问题。
也许你可以试试这个。
可能你有一些被 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
希望这可以帮助!