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

Linux kernel 跟踪对运行进程的pull_task()的调用,linux-kernel,scheduling,strace,Linux Kernel,Scheduling,Strace,我试图计算系统中的进程调用pull_task()的次数。pull_task()是一个调度函数,用于将任务从繁忙CPU的运行队列移动到空闲CPU的运行队列。 我找不到任何简单的机制(包括perf-top)来找出这个问题 系统中有一个名为migration的根进程,我有一种预感,这个进程可能负责调用pull_task()。但我也不能将strace附加到这个过程中,它抛出以下错误: 连接:ptrace(ptrace_-attach,…):不允许操作 “迁移”过程的优先级是实时的。也许这就是为什么斯特拉

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

系统中有一个名为migration的根进程,我有一种预感,这个进程可能负责调用pull_task()。但我也不能将strace附加到这个过程中,它抛出以下错误:

连接:ptrace(ptrace_-attach,…):不允许操作

“迁移”过程的优先级是实时的。也许这就是为什么斯特拉斯不能依附于它的原因


请告知。谢谢。

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

像这样打开函数跟踪程序

echo function > /sys/kernel/debug/tracing/current_tracer
按查看跟踪 cat/sys/kernel/debug/tracing/trace

这些文章应该有助于: