我正在尝试计算系统中进程调用pull_task()的次数。 pull_task()是一个调度函数,它将任务从繁忙的CPU的runqueue移动到空闲CPU的runqueue。 我找不到任何简单的机制(包括perf top)来找到它。
在系统中有一个称为迁移的根进程,我有一种预感,这个进程可能负责调用pull_task()。但我也无法将strace附加到此过程中,它会抛出以下错误:
attach:ptrace(PTRACE_ATTACH,...):不允许操作。
流程“迁移”的优先级是实时的。也许这就是为什么strace不能依附于它?
请告知。感谢。
答案 0 :(得分:2)
你需要看看Ftrace。这将给出系统中一段时间内发生的所有内核函数调用的完整列表。
像这样开启功能追踪器......
echo function > /sys/kernel/debug/tracing/current_tracer
查看跟踪 cat / sys / kernel / debug / tracing / trace
这些文章应该有所帮助: