Linuxの起動が表示されるたびに、次のメッセージが表示されます。
クロックソースtsc不安定(デルタ= NNNNNNNN ns)
ここで、NNNNNNNNは正または負の非常に大きな数です。
このメッセージはどういう意味ですか?これについて心配する必要がありますか?
今日私は正直にこのメッセージを初めて見ましたが、それが実際に何を意味するのか分かりません。
そうは言っても、私は タイムスタンプカウンター に関するWikipediaの記事を読みました(エラーメッセージのtsc
はこれを表しています)。この記事では、第2段落でTSCの問題について述べています。
タイムスタンプカウンターは、最近まで、CPUタイミング情報を取得するための優れた高解像度、低オーバーヘッドの方法でした。マルチコア/ハイパースレッドCPU、複数のCPUを搭載したシステム、および「休止状態」のオペレーティングシステムの登場により、TSCは正確な結果を提供することはできません—細心の注意が必要です考えられる欠陥を修正するために取られました:ティックの速度と、すべてのコア(プロセッサ)の計時レジスタに同じ値があるかどうか単一のマザーボード上の複数のCPUのタイムスタンプカウンターが同期されるという保証はありません。このような場合、プログラマは、コードを単一のCPUにロックすることによってのみ信頼できる結果を得ることができます。それでも、OSまたはBIOSによる省電力対策によりCPU速度が変化したり、システムが休止状態になってから再開したりする場合があります(タイムスタンプカウンターのリセット)。後者の場合、関連性を維持するには、カウンターを定期的に再調整する必要があります(アプリケーションが必要とする時間分解能に従って)。
要するに、現代のシステムでは、TSCは正確に時間を測定するそして、それがメッセージがあなたに伝えていることです。ご使用のシステムでは、TSCは安定したタイムソースではありません。
delta
は、TSCの2つのティックの間の報告された時間の差であると思います。つまり、TSCがカウントアップするたびに1
、NNNNNNNNN
ナノ秒が経過します。したがって、通常はこの方法で非常に正確な時刻を維持できます。
Linuxカーネルは(ソースが安定しているかどうかを判断するために)この頻度を複数回チェックし、異なる結果を得ました。したがって、メッセージ。
それで、あなたは心配する必要がありますか?
正直なところ、わかりません。私の理解では、この問題は、コア間で「移動」されるプロセス(すべてのコアが異なるTSC周波数を持つ可能性がある)またはコアがコアの周波数を変更する(省電力など)ことから発生します。
ほとんどの場合、カーネルがこの問題を検出し、それに応じて調整するため、メッセージが出力されるだけです。
そして、私がカーネルソースで読んだものから(Arch/x86/kernel/tsc.c
)、私は自分の仮定に遠すぎるとは思わない。
メッセージが重大な状態を意味するのではないかと思います。そして、それが重要であるならば、あなたが今までに知っているという仮定に基づいています。