Linuxカーネルの時間測定

Linuxカーネルの時間測定

カーネルで時間間隔を測定したい。ナノ秒がそれほど正確ではないことを知っていますが、ミリ秒よりも高い精度が必要です。

時間を取る機能はとてもたくさんあります。 Jiffies、時間、眠らない時間、眠る時間... ktime_get、clock_gettime、sys_clock_gettimeなどがあります。
機能を見てみると何か巨大な機械が作動しているような感じがしました。時間に変換する必要もなく、複数のタイミング構造間で値を前後に変換することも避けたいと思います。

一度パフォーマンスを尊重しないで大丈夫だと思います。

struct compat_timespec cts;
compat_sys_clock_gettime(CLOCK_MONOTONIC, &cts);

仮想ファイルのファイルを開く機能で使用したいまで機能します。これでcompat_sys_clock_gettimeエラーコードを返します。読み取り時間エラーの原因は何ですか?

だから私の質問は恥ずかしいほど基本的です。

PC起動後にナノ秒数を効率的に取得する方法は?

  • 睡眠時間やその他の特別な条件を外さずに、
  • 失敗する可能性はありませんか?

私の単純な想像は、どこかでティッカー値を読み、その値を乗算/除算してnsを取得する関数がなければならないということです。なぜそんなに簡単ではないのか分かり、私も嬉しいです。

答え1

最近ではktime_get

もっと良いことがあるのか​​、それともこの機能が広く使われて使用するのが良いのかよくわかりません。しかし、この関数は小さな解像度を返すように見え、少なくともそれほど遅くはありません。
また、戻り値はありません。つまり、失敗してはいけませんが、確実に時間を返す必要があります。

関連情報