发送重新安排中断的Perf事件?

时间:2015-04-19 22:53:16

标签: linux-kernel perf smp

当进程唤醒同一核心上的另一个进程时,会生成两个PID的sched:sched_wakeup事件。这非常适合在流程之间找到关系。

当一个进程在另一个核心上唤醒另一个进程时,第二个核心会生成一个irq_vectors:reschedule_entry事件,无论哪个进程都不足以捕获IPI,然后是来自该受害者进程的sched:sched_wakeup事件。

我找不到的是第一个进行清醒的核心的原始过程。发送重新安排IPI的那个。

是否有任何与发送重新安排中断或其他任何事件相关的事件?

(如果不明显,我使用“perf记录”,而不是“perf stat”)

1 个答案:

答案 0 :(得分:0)

Brendan Gregg在他的《 BPF Performance Tools》一书中说there is no perf event or tracepoint for main rescheduling IPI interrupt function smp_send_reschedule()

有一个特殊的SMP调用smp_send_reschedule()未涵盖在这些函数中,可通过native_smp_send_reschedule()进行跟踪。我希望将来的内核版本支持SMP调用跟踪点,以简化对这些调用的跟踪。

2013年,有人提出了一个修补程序,用于在ARM平台上向IPI添加跟踪:https://lore.kernel.org/patchwork/patch/413825 ARM:trace:为处理器间中断添加跟踪点

smp_send_reschedule从多个位置调用,包括kernel/sched/core.c函数resched_currwake_up_idle_cpukick_processttwu_queue_remotewake_up_if_idle,但它们没有跟踪IPI代码路径。您可以尝试将一些perf探针添加到某些功能中。