我想分析/测量一组内核模块驱动程序在 Android Linux 中启动时间所贡献的时间。
假设我有 20 个用于多媒体子系统的驱动程序,每个驱动程序都实现了相应的探测和绑定调用。根据主板配置,有些驱动程序将被绑定,有些则不会。
我想询问linux内核中是否有任何可用的工具,可以说明每个驱动程序在启动时花费了多少时间。
感谢您对此的帮助。 (否则我必须为每个驱动程序绑定调用显式调用计时器 KPI,并在绑定成功后打印它们。)
我知道我们可以启用 ftrace 和 perf。但我不熟悉使用它们。仍在对此进行更多探索。
您可以使用启用时间戳的
Ftrace
来跟踪所需的时间
绑定/取消绑定或任何其他正在执行的内核函数。
Ftrace 是直接内置于 Linux 内核中的跟踪实用程序。只需在内核中打开这些配置即可:
CONFIG_FUNCTION_TRACER
CONFIG_FUNCTION_GRAPH_TRACER
CONFIG_STACK_TRACER
CONFIG_DYNAMIC_FTRACE
您的 Ftrace 输出应该如下所示。检查时间戳列
有关 Ftrace 的更多详细信息可以在 kernel.org 中找到