我正在尝试确定为什么成千上万的上下文切换发生在我的隔离过程中,如Why one non-voluntary context switch per second?所述,所以我用ftrace
跟踪内核。
我的Java线程没有进行任何I / O或任何阻塞。正在繁忙的旋转中增加一个长变量,就是这样。
使用function
跟踪器,我看到了一堆:
java-3372 [002] .N.. 5366.541160: rcu_note_context_switch <-__schedule java-3372 [002] d... 5366.541163: finish_task_switch <-__schedule java-3372 [002] .N.. 5366.553137: rcu_note_context_switch <-__schedule java-3372 [002] d... 5366.553139: finish_task_switch <-__schedule java-3372 [002] .N.. 5366.565113: rcu_note_context_switch <-__schedule java-3372 [002] d... 5366.565115: finish_task_switch <-__schedule
有谁知道rcu_note_context_switch
的含义?
我的内核在Ubuntu上是3.5.0-17-generic。
我也错过了跟踪器sched_switch
所以我使用了function
跟踪器。我做了一些研究,但我想我必须重新编译我的内核才能使这个sched_switch
可用于ftrace。不知道该怎么办。这是我的ftrace
可用示踪剂。如您所见,没有sched_switch
:\
# cat /sys/kernel/debug/tracing/available_tracers blk function_graph mmiotrace wakeup_rt wakeup function nop