我有兴趣对Linux内核的一个模块进行性能分析。我尝试了以下步骤:
- 使用
CONFIG_PROFILING=y
编译内核 - 使用
profile=2
启动内核 - 通过
echo 123 > /proc/profile
重置性能分析器 - 专门的守护程序成功加载了模块
- 运行一个用户空间应用程序,通过特定的
ioctl
调用使用该模块。测试应用程序按预期工作,因此模块工作正常。 - 使用
readprofile -p /proc/profile -m System.map
读取性能分析信息,其中System.app与内核一起生成。
目前为止,几乎一切都按预期工作。然而,没有得到任何有关我的模块的信息,即没有提到来自该模块的任何函数。
然而,经过重新思考,我想起我忘记使用CONFIG_PROFILING=y
重新编译该模块。
所以,我的问题是:如果没有使用CONFIG_PROFILING=y
编译,模块是否不会显示在性能分析日志中?还是有其他更明显的原因我不知道?
如果有人想知道为什么我要问而不是直接尝试,那是因为我不能在家里做这件事,我宁愿先听听有经验的人说什么,在再次访问代码之前。