Ve Fedoře 16 byl změněn výchozí program pro synchronizaci systémového času z internetu (NTP klient). Místo obvykle používaného démona ntpd z balíčku ntp se nyní implicitně instaluje balíček chrony a v případě, že je zapnutá synchronizace hodin přes NTP, spouští se démon chronyd. Samozřejmě balíček ntp zůstává nadále podporovaný a program pro nastavení systémového času a NTP (system-config-date) podporuje oba balíčky.
Hlavním důvodem pro tuto změnu je lepší chování na systémech, které nejsou nepřetržitě v provozu nebo mají jen občasné připojení k internetu, tj. typicky desktopy a notebooky. Démon ntpd byl navržený spíše pro serverové prostředí, pro optimální výsledky vyžaduje nepřetržitý provoz s neustálým připojením.
Chrony používá jiné algoritmy pro řízení hodin, které mu dávají několik výhod oproti ntp:
- nevyžaduje pravidelné dotazovaní NTP serveru, pokud je systém připojen k internetu třeba jen několikrát týdně a vždy jen na krátkou chvíli, synchronizace bude stále relativně dobře pracovat
- rychlejší synchronizace, obvykle stačí minuty místo hodin k minimalizaci časové i frekvenční chyby systémových hodin
- využití plného rozsahu pro korekci frekvence hodin poskytovaného jádrem systému (10 % místo 0,05 %); to může být užitečné ve virtualních strojích
- po prvotním nastavení systémových hodin je správný čas udržován už jen zpomalováním a zrychlováním hodin, nikdy nedochází ke skoku v čase, který by mohl rozhodit jiné bežící programy
- mnohem lepší odezva na rychlé změny frekvence hodin, to je užitečné na hardwaru s nekvalitními hodinami nebo ve virtuálních strojích
- lepší stabilita při dočasném jednostraném zahlcení síťového připojení
Mezi další výhody patří menší spotřeba paměti a také žádné zbytečné probouzení procesu, které by mohlo nepatrně zvyšovat spotřebu elektřiny.
Nevýhodou je chybějící podpora pro pokročilé části protokolu NTP, jako je autentizace pomocí veřejných klíčů nebo broadcast a multicast režimy. Také konfigurace a vzdálená správa je odlišná.
Zajímavou vlastností je možnost zapnout sledování tzv. hodin realného času (RTC). Tyto hodiny běží i když je počítač vypnutý a právě podle nich se nastavuje systémový čas při bootu. Bohužel nebývají moc přesné a rozcházejí se třeba i o několik sekund týdně. Chrony ale umožnuje tuto odchylku sledovat a pak při dalším bootu kompenzovat chybu, která vznikla v době, kdy byl počítač vypnutý. To může být užitečné na systémech, které se připojují k internetu jen zřídka a bývají delší dobu vypnuté.
Zde jsou uvedeny některé příkazy pro sledování aktuálního stavu:
$ chronyc tracking Reference ID : 147.231.100.5 (lx.ujf.cas.cz) Stratum : 3 Ref time (UTC) : Mon Nov 7 16:47:07 2011 System time : 0.000000477 seconds fast of NTP time Frequency : 80.629 ppm fast Residual freq : -0.000 ppm Skew : 0.035 ppm Root delay : 0.014229 seconds Root dispersion : 0.012912 seconds
$ chronyc sources 210 Number of sources = 4 MS Name/IP address Stratum Poll LastRx Last sample ============================================================================ ^+ prage.qls.cz 2 10 395 +1355us[+1355us] +/- 54ms ^? 80-79-25-101.static.maste 11 7 88 -194ms[ -194ms] +/- 970ms ^* lx.ujf.cas.cz 2 10 805 -169us[ -189us] +/- 50ms ^+ racon.tpansky.us 2 10 423 -11ms[ -11ms] +/- 61ms
$ chronyc sourcestats 210 Number of sources = 4 Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev ============================================================================== prage.qls.cz 22 12 293m 0.296 0.509 +895us 3039us 80-79-25-101.static.maste 15 10 907 4.603 12.901 -194ms 3189us lx.ujf.cas.cz 35 16 13h -0.000 0.034 -213ns 834us racon.tpansky.us 51 23 14h -0.016 0.047 -1025us 1538us
21. 11. 2011 at 13:28
„Chrony ale umožnuje tuto odchylku sledovat a pak při dalším bootu kompenzovat chybu, která vznikla v době, kdy byl počítač vypnutý.“
.. to snad umi poslednich 20 let i hwclock(8), ne?
21. 11. 2011 at 15:47
Jestli myslíš hwclock –adjust, tak ten vyžaduje aby nic jiného kromě něj nezapisovalo do RTC. Když beží ntpd nebo chronyd (ve výchozí konfiguraci), tak kernel každých 11 minut zapisuje do RTC systémový čas, což rozhodí ten výpočet pro odchylku. Je to zmíněné v hwclock(8).
21. 11. 2011 at 16:17
Ja i clanek mluvime o bootu a nepresnosti ke ktere doslo kdyz byl pocitac vypnuty. Pred tim nez se nejaka sluzba nastartovala tak se volaval hwclock –adjust aby se chyba kompenzovala.
Pravdou je, ze se systemd se todle nedela (myslim, ze nejnovejsi verze vubec nepouzivaji hwclock a volaji jen settimeofday() a nejake nepresnosti HW neresi…) — pak je asi opravdu nutne resit to pozdeji, nedej boze v situaci kdyz se o to RTC perou ruzne dalsi aplikace 😉