5

我正在为我的 linux 应用程序热点收集使用 Intel(R) VTune(TM) Amplifier XE 2013 Update 5 (build 274450),但报告说“[在任何已知模块之外]”消耗大部分时间,所以我想获取有关未知模块的更多信息。

当我阅读 vtune Amplifier 的发行说明时,它说“热点列表可能包含”在内核早于 2.6.20 (200233501) 的系统上的“任何已知模块之外””,但我的 linux 内核是“2.6.32”,有什么想法吗?

4

3 回答 3

3

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

于 2013-06-05T09:45:09.327 回答
3

我过去也曾遭受过这个问题的困扰,如果您不知道为什么会这样,那将非常令人沮丧。

2 周前,我安装了 Ubuntu 13.04 和 vtune update 14,我欣喜若狂,因为我可以(再次)看到我的代码中发生了什么。

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

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

  • 我重装了驱动,没用。

  • 我重新安装了英特尔 vtune .. 没有帮助。

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

也许你可以试试这个。

于 2013-12-22T09:53:43.877 回答
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

希望这可以帮助!

于 2020-02-05T19:24:48.990 回答