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>
不満は、デフォルトのTSCからフォールオーバーする必要があり、最適なものを検出するためのモジュールがないことです。どうやらそれはすでに正しいものを選択しているので、これは問題ではありません。
警告はそこにあるので、カーネルがデフォルトで間違った代替クロックソースを選択している場合の対処方法がわかります。
TSCタイマーが信頼できるタイマーを生成しない理由として、これは仮想マシンソフトウェアのバグである可能性があります。仮想マシンのマニュアルを確認することをお勧めします。一部のプロセッサには、C-State2以下のCPUアイドル状態でTSCタイマーが中断するエラータもあります。いずれにせよ、それは大きな問題ではないと思います。