【问题标题】:Trace the calls to pull_task() for running processes跟踪对 pull_task() 的调用以获取正在运行的进程
【发布时间】:2011-07-14 00:56:34
【问题描述】:

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

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

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

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

请多多指教。谢谢。

【问题讨论】:

    标签: linux-kernel scheduling strace


    【解决方案1】:

    您需要查看 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

    【讨论】:

      猜你喜欢
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多