0

システム内のプロセスによって pull_task() が呼び出された回数をカウントしようとしています。pull_task() は、ビジー状態の CPU のランキューからアイドル状態の CPU のランキューにタスクを移動するスケジューリング関数です。これを見つけるための簡単なメカニズム (perf top を含む) を見つけることができませんでした。

システムには migration と呼ばれるルート プロセスがあり、このプロセスが pull_task() の呼び出しを担当している可能性があるという予感があります。しかし、このプロセスに strace をアタッチすることもできません。次のエラーがスローされます。

attach: ptrace(PTRACE_ATTACH, ...): 許可されていない操作です。

プロセス「移行」の優先度はリアルタイムです。おそらく、それが strace が接続できない理由でしょうか?

親切なアドバイス。ありがとう。

4

1 に答える 1

2

Ftrace を確認する必要があります。これにより、システムで一定期間発生したすべてのカーネル関数呼び出しの完全なリストが得られます。

関数トレーサーを次のようにオンにします...

echo function > /sys/kernel/debug/tracing/current_tracer

cat /sys/kernel/debug/tracing/trace でトレースを表示

これらの記事が役立ちます。

Ftrace を使用したデバッグ パート 1

Ftrace を使用したデバッグ パート 2

于 2011-07-19T00:29:36.977 に答える