2012-01-26 5 views
1

私は、特定のスレッドがCPU上で実行されているかどうかを検出する方法を見つけようとしています。理想的には、自分のスレッドがいつスケジュールされるか、いつ実行されるか、コンテキストスイッチによって中断されたかを追跡するために、カーネルに直接接続したいと思っています。この情報を正確に報告できる棚用ツールはありますか?Linuxスケジューラで長い待機時間を検出する

答えて

2

'perf sched'ユーティリティが必要な場合や、古いカーネルの場合は 'ftrace'が必要です。 'schedのPERF'

は、現在5つのサブコマンドがありますschedのPERF

{|待ち時間|レコード地図|再生|スクリプト}

  • レコード - 任意のワークロードの低オーバーヘッド記録
  • 待ち時間 - タスクごとの出力待ち時間メトリック
  • マップ - コンテキスト切り替えの概要/マップを表示
  • 再生 - シミュレートされたスレッドを使用してキャプチャされた作業負荷を再生
  • スクリプト -

http://lwn.net/Articles/353295/

man perf-sched 
0

私はOProfileを使用します。

これは、システムパフォーマンスを調べるのに最も簡単な方法であり、必要なものには十分に適しています。他にスーパーカスタムが必要な場合は、関心のあるイベントのスケジューリング中にGPIOをトグルするカスタムカーネルを構築し、ロジックアナライザで信号を調べるようなことになるかもしれません。私はあなたの時間の価値がないので、そのアプローチをお勧めしません。

+0

を記録したワークロードの詳細なトレースを参照するには、また、カーネルのスケジューリングコードに追加ロジックを追加すると、それが呼ばれ、特に以来結果を歪曲する可能性がありますたくさん :) –

関連する問題