0

我正在尝试计算系统中进程调用 pull_task() 的次数。pull_task() 是一个调度函数,将任务从繁忙 CPU 的运行队列移动到空闲 CPU 的运行队列。我找不到任何简单的机制(包括 perf top)来解决这个问题。

系统中有一个叫做migration的根进程,我预感这个进程可能负责调用pull_task()。但我也无法将 strace 附加到此过程,它会引发以下错误:

附加:ptrace(PTRACE_ATTACH,...):不允许操作。

进程“迁移”的优先级是实时的。也许这就是为什么 strace 不能附加到它的原因?

好心提醒。谢谢。

4

1 回答 1

2

您需要查看 Ftrace。这将给出在一段时间内发生在系统中的所有内核函数调用的完整列表。

像这样打开功能跟踪器......

echo function > /sys/kernel/debug/tracing/current_tracer

通过 cat /sys/kernel/debug/tracing/trace 查看跟踪

这些文章应该有助于:

使用 Ftrace 调试第一部分

使用 Ftrace 进行调试第二部分

于 2011-07-19T00:29:36.977 回答