Назад | Перейти на главную страницу

Ядро Red Hat говорит: «Clocksource tsc unstable», но я использую kvm-clock

У меня есть пара виртуализированных RHEL 6, работающих на хосте RHEV. И хост, и виртуальные машины имеют время безотказной работы> 1 года.

Только за последние два дня они начали редко кидать эти сообщения ядра в случайные моменты

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

Хорошо: я последую совету. Однако странно то, что я не использую tsc в качестве источника часов.

[~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource 
kvm-clock

Изучая документацию по фреймворку clocksource, я придумал больше вопросов, чем ответов.

  1. Прежде всего, почему ядро ​​жалуется на источник тактовых импульсов, который система не должна использовать? Возможно, ядро ​​в любом случае перебирает все доступные источники тактовой частоты? Если да, то зачем?

  2. Насколько мне известно, это сообщение означает, что текущий источник тактовых импульсов отодвинулся от сторожевого таймера больше, чем WATCHDOG_THRESHOLD но каков текущий источник часов сторожевого таймера? Это не может быть kvm-clock, так как обычно CLOCK_SOURCE_MUST_VERIFY устанавливать. Есть ли способ отобразить его во время выполнения?

  3. Я понимаю, что tsc не считается точным с современными процессорами из-за функций регулирования / энергосбережения, но /proc/cpuinfo сообщает, что процессоры, видимые виртуальной машиной, имеют constant_tsc флаг. Поэтому я предполагаю, что tsc также может обеспечить довольно надежное время. Является ли этот флаг «обходом» основного реального ЦП или это просто имитация, работающая со своим собственным счетчиком? В первом случае я мог предположить, что планировщик хоста переключил процесс виртуальной машины на другое ядро, имеющее смещенный счетчик. Может ли это иметь смысл?