GNU/Linux >> Znalost Linux >  >> Linux

Linux – jak měřit a předcházet posunu hodin?

Na několika produkčních platformách jsme pozorovali příznaky, které naznačují, že denní čas periodicky přeskakuje dopředu nebo dozadu. Skoky jsou obvykle kolem 1 sekundy, obvykle se ruší (skok vpřed a poté velmi krátce poté) a dochází k nim přibližně 50krát za den. Tento posun je nejpatrnější v době špičkového využití aplikací a během období velkých diskových I/O operací, jako jsou denní zálohy. Tyto posuny ovlivňují naši měkkou aplikaci citlivou v reálném čase.

Systémy jsou servery Oracle Netra X4250 a Netra X4270 se systémem SLES 11SP2 s výchozím jádrem 3.0.58-0.6.6.

$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm

$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc

Vypnuli jsme NTP, ale to nemělo žádný vliv na posuny. Existují nástroje, které měří posun denního času? Jak se tomu můžeme vyhnout?

Toto jsou produkční platformy a v našich laboratořích nemůžeme tento problém znovu vytvořit, takže moje schopnost experimentovat je omezená. Pokud to nechám na svých vlastních zařízeních, napíšu nástroj na měření driftu a možná budu experimentovat s hodinovým zdrojem HPET.

Přijatá odpověď:

Existují nástroje, které měří posun denního času?

Jediné nástroje, o kterých vím, jsou nástroje NTP, které by měly stačit. Nemusíte skutečně konfigurovat ntpd pro synchronizaci s daným zdrojem hodin, stačí použít -d možnost ntpdate k načtení vypočítaného offsetu.

Příklad:

[[email protected] ~]$ ntpdate -d clock.redhat.com 2>/dev/null | egrep "^offset"
offset -0.004545
[[email protected] ~]$

-d je možnost ladění, která NTP funguje, aniž by se skutečně dotkla systémových hodin.

Nějaké rady, jak se tomu můžeme vyhnout?

Příliš mě nepřekvapuje, že to nejste schopni reprodukovat ve vývojářských/testovacích prostředích, protože je to pravděpodobně jen kvůli hardwarovým hodinám. Pokud máte s někým hardwarovou podporu, pokusil bych se vaše stroje opravit. Jednou z možností je výměna jednoho z vývojářských strojů za tento produkční stroj, oprava dřívějších systémů PROD a jeho opětovné zavedení jako vývojového stroje, který nahradí ten, který je nyní v PROD.

Krátce řečeno, přepnutí zdroje hardwarových hodin je asi vše, co můžete udělat. Pokud ne nebo nemůžete provést výměnu, navrhoval bych, abyste šli cestou hpet. Můžete otestovat, zda se změna zdroje hodin neplete se systémovými službami, a poté jej nasadit do produkce jako zdrávas.

Související:Linux – Zachytávání vzdáleného výstupu lokálně v terminálu Mac?
Linux
  1. Jak nainstalovat a používat Traceroute v Linuxu

  2. Jak archivovat a komprimovat soubory na Linuxu

  3. Jak připojit a odpojit disky v systému Linux

  1. Jak spravovat a vypisovat služby v Linuxu

  2. Jak nainstalovat a otestovat Ansible na Linuxu

  3. Linux – „pošta“ a jak se v něm naviguje?

  1. Jak duální bootování Linuxu a Windows

  2. Jak nainstalovat Elasticsearch a Kibana na Linux

  3. Jak nainstalovat a používat Flatpak v Linuxu