Использование аппаратных часов в 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) Есть ли лучший способ достичь того, что я пытаюсь сделать?

благодаря

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