tracing_on
ディレクトリに1 をエコーし/sys/kernel/debug/tracing
、1 秒後に再び 0 をエコーしました。ただし、最初のエントリのタイムスタンプは で216.852
、最後のエントリの234.136
タイムスタンプは、実行の合計時間範囲が約 18 秒であることを示しています。どうしてこのようなことが起こるのでしょうか。また、さまざまなコンピューターでこれを何度も試しましたが、通常とは異なる時間範囲になります。どこか間違っているのでしょうか。
答え1
正確な理由はわかりませんが、Linux はリアルタイム OS ではないため、操作が指定された時間内に機能する保証はありません。また、トレースのオン/オフ操作の優先度はかなり低いため、カーネルが適切な時間を待ってリクエストを処理している可能性があり、これが遅延の原因です。
操作が非同期ファイルに書き込むと、書き込みコマンドはすぐに戻り、カーネル内に要求を保存しますが、カーネルは後で変更を読み取って対応します。