我在RHEV主机上运行了几个虚拟化的RHEL 6。 主机和虚拟机都有1年以上的正常运行时间。
直到最近两天,他们才开始很less随机丢弃这些内核消息
kernel: Clocksource tsc unstable (delta = -17179878652 ns). Enable clocksource failover by adding clocksource_failover kernel parameter.
好的:我会听从build议。 奇怪的是,我没有使用tsc作为时钟源
[~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource kvm-clock
研究clocksource框架的文档,我想出了更多的问题而不是答案。
首先,为什么内核抱怨系统不应该使用的时钟源? 内核是否循环通过所有可用的时钟源,也许? 如果是,为了什么?
据我所知,这个消息意味着当前的clocksource比WATCHDOG_THRESHOLD更远离看门狗时钟源,但是当前的看门狗时钟源是什么? 它不能是kvm时钟,因为它通常设置CLOCK_SOURCE_MUST_VERIFY 。 有没有办法在运行时显示它?
我知道由于节stream/省电function,现代CPU不认为tsc是准确的,但是/proc/cpuinfo告诉VM看到的处理器有constant_tsc标志。 所以我会认为tsc也可以提供一个相当可靠的时机。 这个标志是“旁路”到底层的真实CPU还是只是一个模拟的,运行自己的计数器? 在第一种情况下,我可以推测主机的调度程序将VM进程切换到具有漂移计数器的不同内核。 这有道理吗?