调试Java线程上的上下文切换时rcu_note_context_switch是什么意思?

时间:2014-04-25 16:08:05

标签: java linux multithreading process real-time

我正在尝试确定为什么成千上万的上下文切换发生在我的隔离过程中,如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

0 个答案:

没有答案