現在、スケジューラのスレッド ウェイクアップ フローを理解するために、ftrace (具体的には Android の atrace 経由) を使用しています。ただし、以下の行は私を混乱させます。これは、現在のタスク (ls-4787) がそれ自体 (comm=ls pid=4787) を起動していることを示しています。
なぜ、またはどのようにこれが起こるのでしょうか? 現在実行中のプロセス (既に実行キューに入っています!) が... 自分自身をキューに追加する状況は考えられません。私はこれを間違って読んでいますか?あなたが提供できるかもしれない助けをありがとう!
kworker/0:0-4692 ( 4692) [000] d..3 52894.176161: sched_switch: prev_comm=kworker/0:0 prev_pid=4692 prev_prio=120 prev_state=S ==> next_comm=ls next_pid=4787 next_prio=120
adbd-209 ( 209) [001] d..3 52894.176192: sched_switch: prev_comm=adbd prev_pid=209 prev_prio=120 prev_state=S ==> next_comm=adbd next_pid=230 next_prio=120
ls-4787 ( 4787) [000] dN.4 52894.176204: sched_wakeup: comm=kworker/0:0 pid=4692 prio=120 success=1 target_cpu=000
ls-4787 ( 4787) [000] dN.4 52894.176211: sched_wakeup: comm=ls pid=4787 prio=120 success=1 target_cpu=000
ls-4787 ( 4787) [000] d..3 52894.176221: sched_switch: prev_comm=ls prev_pid=4787 prev_prio=120 prev_state=R+ ==> next_comm=kworker/0:0 next_pid=4692 next_prio=120
補足として、これらの特異なインスタンスは常に kworker イベントと結合しているように見えますが、スケジューラーの観点からこれが影響を受ける理由はわかりません。