web-dev-qa-db-ja.com

選択したクロックソースがHyperVの場合にTSCについて文句を言うLinuxカーネル

Windows Server2012を搭載したHyperVでRHEL6ボックスを実行しています。RHELボックスのいくつかで、/ var/log/messagesにこのエラーが表示されます。

kernel: Clocksource tsc unstable (delta = -62519781 ns).  Enable clocksource failover by adding clocksource_failover kernel parameter.

現在のクロックソースは-

[root@server ~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
hyperv_clocksource

そして、利用可能なクロックソースは-

[root@server ~]# cat /sys/devices/system/clocksource/clocksource0/available_clocksource 
hyperv_clocksource tsc acpi_pm jiffies 

私の質問は-1です。クロックソースがHyperVの場合、サーバーがtscについて不平を言うのはなぜですか。 2.フェイルオーバーとしてどのクロックソースを選択する必要がありますか?

追伸-私はRedHatソリューションを知っています- https://access.redhat.com/site/solutions/43488 。なぜこれが起こっているのか疑問に思っていますか?

RedHat Accessをお持ちでない場合の解決策は、次のとおりです。

クロックソースをシステム上の別の使用可能なクロックに変更するまず、使用可能なシステムクロックソースを見つけます:

$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource

****結果の例を以下に示します。*

$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource 
tsc hpet acpi_pm 

次に、使用中の現在のクロックソースを確認します:

$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource

****結果の例を以下に示します。*

$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource 
tsc

最後に、新しいクロックソースを設定します:

echo <new clock source selection> > /sys/devices/system/clocksource/clocksource0/current_clocksource

この変更をシステムの再起動後も持続させるには、/ boot/grub/grub.confのカーネルコマンドラインに以下を追加する必要があります:

clocksource=<clock source choice>
2
Sidd

不満は、デフォルトのTSCからフォールオーバーする必要があり、最適なものを検出するためのモジュールがないことです。どうやらそれはすでに正しいものを選択しているので、これは問題ではありません。

警告はそこにあるので、カーネルがデフォルトで間違った代替クロックソースを選択している場合の対処方法がわかります。

TSCタイマーが信頼できるタイマーを生成しない理由として、これは仮想マシンソフトウェアのバグである可能性があります。仮想マシンのマニュアルを確認することをお勧めします。一部のプロセッサには、C-State2以下のCPUアイドル状態でTSCタイマーが中断するエラータもあります。いずれにせよ、それは大きな問題ではないと思います。