我们在Windows Server 2012上运行HyperV上的RHEL 6盒。在我们的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.我应该select哪个时钟源作为故障切换?
PS – 我知道红帽解决scheme – https://access.redhat.com/site/solutions/434883 。 我只是想知道为什么会发生这种情况?
对于那些没有RedHat Access,解决scheme如下 –
将时钟源更改为系统上的另一个可用时钟首先,find可用的系统时钟源:
$ 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的默认设置而失败,而您没有模块来检测最好的模块。 显然这是select正确的一个,所以这不是一个问题。
警告就在那里,所以如果内核默认select了错误的替代时钟源,你就知道该怎么做。
至于为什么TSC定时器不能生成可靠的定时器,这可能是虚拟机软件中的一个错误。 你可能想检查你的虚拟机手册。 在一些处理器中,C状态2和较低的CPU空闲状态也会中断TSC定时器。 无论哪种方式,我不认为这是一个主要的关注。