跟踪对pull_task()的调用以运行进程

时间:2011-07-14 00:56:35

标签: linux-kernel scheduling strace

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

在系统中有一个称为迁移的根进程,我有一种预感,这个进程可能负责调用pull_task()。但我也无法将strace附加到此过程中,它会抛出以下错误:

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

流程“迁移”的优先级是实时的。也许这就是为什么strace不能依附于它?

请告知。感谢。

1 个答案:

答案 0 :(得分:2)

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

像这样开启功能追踪器......

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

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

这些文章应该有所帮助:

Debugging with Ftrace part one

Debugging with Ftrace part two