I have a couple of virtualized RHEL 6 running on a RHEV host. Both host and VMs have >1year uptime.
Only in the last two days they started seldom throwing these kernel messages at random times
kernel: Clocksource tsc unstable (delta = -17179878652 ns). Enable clocksource failover by adding clocksource_failover kernel parameter.
Fine: I'll follow the advice. The strange thing is, though, I'm not using tsc as a clocksource
[~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
kvm-clock
Studying the documentation of the clocksource framework, I came up with more questions than answers.
First of all, why is the kernel complaining about a clocksource that the system is not supposed to use? Is the kernel cycling anyway through all the available clocksources, perhaps? If yes, what for?
As far as I know, the message means that the current clocksource is drifted away from the watchdog clocksource more than
WATCHDOG_THRESHOLD
but what is the current watchdog clocksource? It cannot be kvm-clock, since it usually hasCLOCK_SOURCE_MUST_VERIFY
set. Is there a way to display it at runtime?I understand that tsc isn't considered to be accurate with modern CPUs because of throttling/power saving features but
/proc/cpuinfo
tells that the processors seen by the VM have theconstant_tsc
flag. So I would assume tsc can also provide a quite reliable timing. Is that flag a "bypass" to the underlying real CPU or is it just an emulated one, running its own counter? In the first case, I could speculate that the host's scheduler switched the VM process to a different core having a drifted counter. Could this make sense?
0 Answers