2 つの Linux カーネル バージョン間のスケジューリング レイテンシを比較したいと考えています。これが私がこれまでに試したことです:
- 両方のカーネルで構成された Ftrace
- トレースでスケジュールされたイベントをオンにしました。
- ウェイクアップ トレーサーを有効にしました。
ただし、ウェイクアップは、私のCプログラムではなく、最も優先度の高いプロセスの結果のみを示しています。nice を使ってトレースからキャプチャしてみました。それでも、他の同等に高いプロセスのログが表示されます。プロセスのログを取得するために、ここで他の手順が欠落していますか? プログラムの起動時に nice を使用する代わりに、プログラムのソース コードを変更して、プロセスの優先度を最高に設定するより良い方法はありますか?
私が試した次のステップは、ウェイクアップ トレーサを無効にして、sched イベントだけを有効にすることでした。取得したログは次のようになります
0 1dNh3 3us+: sched wakeup : task hald : 1952 [120] success=1
−0 1d..3 7us! : sched switch : task swapper : 0 [140] (R) ==>
hald : 1952 [120]
およびは遅延+
を!
示します (数値を知るには ftrace カーネルのドキュメントを参照してください)。sched wakeup には「+」と sched witch の「!」のレイテンシがあるということですか。それぞれマイクロ秒?
Linux のスケジューリング レイテンシを比較する他の方法はありますか?