Использование аппаратных часов в Linux

Я использую старую версию RHEL, которую я недавно обновил с 5.4 до 5.8, с настраиваемым ядром 2.30.9.

Системные часы дрейфуют (> 5 секунд / день), если они не управляются с использованием внешнего источника времени, такого как NTP.

Аппаратные часы в BIOS выглядят намного точнее (<1 секунда / неделя).

У меня есть несколько ящиков Linux, и если я /etc/adjtime я обнаружил, что дрейф измеряется как 0.000004, -0.000050, 10.000107 и -0.000234 секунды / день на разных машинах с идентичным оборудованием, ОС и приложениями.

Нам нужно минимизировать дрейф часов, когда источник времени externel недоступен.

Я попробовал различные варианты загрузки ядра с переменным успехом, чтобы улучшить ситуацию:

Первоначально ядро ​​установило строку в /boot/grub/grub.conf

 kernel /vmlinuz-2.6.30.9 ro root=LABEL=/ pmtr=0x608 acpi_pm_good clocksource=acpi_pm noapic ide_core.noprobe=1.1 mem=512M ramdisk_size=262144 

Файлы clocksource содержат:

 cat /sys/devices/system/clocksource/clocksource0/available_clocksource tsc acpi_pm jiffies cat /sys/devices/system/clocksource/clocksource0/current_clocksource acpi_pm 

Это дрейфует более чем на 5 секунд в день!

Сначала я попытался включить HPET:

 kernel /vmlinuz-2.6.30.9 ro root=LABEL=/ pmtr=0x608 acpi_pm_good hpet=enable clocksource=hpet noapic ide_core.noprobe=1.1 mem=512M ramdisk_size=262144 

Файлы clocksource содержат:

 cat /sys/devices/system/clocksource/clocksource0/available_clocksource tsc acpi_pm jiffies cat /sys/devices/system/clocksource/clocksource0/current_clocksource tsc 

Это все еще кажется дрейфом, но всего лишь около 4 секунд в день.

Затем я попытался отключить tsc: kernel /vmlinuz-2.6.30.9 ro root = LABEL = / pmtr = 0x608 acpi_pm_good notsc divider = 10 acpi_pm_good clocksource = acpi_pm noapic ide_core.noprobe = 1.1 mem = 512M ramdisk_size = 262144

Файлы clocksource содержат:

 cat /sys/devices/system/clocksource/clocksource0/available_clocksource tsc acpi_pm jiffies cat /sys/devices/system/clocksource/clocksource0/current_clocksource acpi_pm 

Это работает около дня, и нет заметного дрейфа.

Мои вопросы таковы:

1) Согласно этому веб-сайту http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006427 требование divider=10 clocksource=acpi_pm было удалено в RHEL 5.3, так почему это улучшает вещи для RHEL 5.8?

2) Каковы последствия параметров ядра, которые я меняю?

3) Насколько точным является дрейф в /etc/adjtime ?

4) Можно ли настроить обновление hwclock при работе ntp?

5) Есть ли лучший способ достичь того, что я пытаюсь сделать?

благодаря

One Solution collect form web for “Использование аппаратных часов в Linux”

Возможно, вы захотите попробовать другое ядро. У пользовательского ядра могут быть некоторые проблемы с удержанием времени.

  • Могу ли я написать вывод команды разницы времени в файл?
  • как конвертировать число в формат времени в сценарии оболочки?
  • Преобразовать временную метку unix в hh: mm: ss: SSS (где SSS - миллисекунды) в AWK
  • Какая аппаратная поддержка необходима, чтобы linux выполнял `gettimeofday` /` clock_gettime` в пользовательском пространстве с помощью `hped`?
  • Не удалось перенаправить stdout / stderr в файл журнала
  • Обновление системного времени Linux программно
  • Какое состояние (состояния) процесса пересчитывается на время процессора?
  • Почему существует разница в длительности выполнения команды с различными методами перенаправления?
  • Тестирование интенсивности процессора одной команды или функции
  • Удаление файла после X дней не работает
  • Могу ли я измерять холодное время загрузки с помощью журналов?
  • Linux и Unix - лучшая ОС в мире.