問題 - Linux システムで断続的なクロック ドリフト (2 秒) があるため、カーネル タイマー スレッドが 2 秒 + タイムアウト時間で実行されることがあります。
質問 - 複数のハードウェア クロックソース (TSC、HPET、ACPI_PM) があります。プライマリ クロックソースがドリフトした場合、フォールバックとしてセカンダリ クロックソースを強制的に使用するカーネル タイマー スレッドを作成することは可能ですか?
あなたが説明することは、クロックドリフト(システムエラー)のようには聞こえませんが、タイマー割り込みが失われたように聞こえます。時限割り込み (HPET、RTC、ただし TSC ではない) を生成できる別のハードウェアがある場合は、タイマーまたは割り込みハンドラー (またはハンドラー) のいずれか最初に発生した方から、時間に敏感な処理を行うことができます。それらの間のある種の同期を設計します。
クロックの速度が実際の時間よりも遅いときに実際のクロック ドリフトが発生した場合は、それを推定して、タイマーがスケジュールされているときに補正することができます。しかし、割り込みの損失は、より深刻な問題の兆候であり、根本的な原因に対処することは理にかなっています。これは、2 次割り込みソースにも影響を与える可能性があります。