カーネルモジュールがスレッドに接続できる単調クロックソースはありますか?関連スレッドが実行されている場合にのみ増加しますか?カーネル内のスレッド固有の単調クロックソース
perf
APIのように動作するものを探していますが、サイクルや命令を測定するのではなく、これまでに費やされたCPU時間の合計をナノ秒単位で測定します。
ユーザー空間ではlibrt
のclock_gettime
関数があり、上記の動作を得るためのクロックの種類としてCLOCK_PROCESS_CPUTIME_ID
を指定できます。 source code of clock_gettime
を見ると、pthread
ライブラリの別の関数である__pthread_clock_gettime
が呼び出されます。
カーネルモジュールからLinuxカーネル内にセットアップしてタスクにアタッチできる類似のものを探していますが、タスクに関連付けられたtask_struct
へのポインタがあります。
私はLinuxカーネルにそのようなサブシステムを知りません。私はあなたがコンテキスト切り替え機能を計測するためにkprobesを使用する可能性がある特定のタイマー(あなたのアーキテクチャ用)を使用して独自のバージョンを実装する必要があると信じています。 –
ありがとうございます。私はktime_getとpreempt_notifierメカニズムを使用して終了しました。 –
共有のおかげで、私はこのpreempt_notifierメカニズムについて知らなかった。 –