Aller au contenu

Horloge monotone

Horloge monotone (en anglais monotonic clock, CLOCK_MONOTONIC) : horloge du noyau, lue par l'appel système clock_gettime(), qui compte les secondes depuis un point arbitraire (sous Linux, le démarrage, hors mise en veille) et ne recule ni ne saute jamais. Seule sa vitesse varie légèrement, au gré des ajustements de fréquence de la synchronisation NTP.

Elle s'oppose à l'horloge réelle, CLOCK_REALTIME, qui donne la date et peut faire un bond, en avant ou en arrière, quand on la règle ou quand la synchronisation la corrige d'un coup. Règle qui en découle : on date un événement avec l'horloge réelle, on mesure une durée avec l'horloge monotone. Un délai calculé par time.time() + 30 en Python devient faux si l'heure est corrigée pendant l'attente ; time.monotonic() ne l'est jamais. Variantes : CLOCK_BOOTTIME compte aussi le temps de veille, CLOCK_MONOTONIC_RAW ignore tout ajustement.

systemd applique la même distinction à ses minuteurs : OnBootSec= ou OnUnitActiveSec= reposent sur l'horloge monotone et ignorent les changements d'heure, alors que OnCalendar= suit l'heure réelle et recalcule son échéance après chaque saut. Les horodatages de dmesg sont aussi des secondes depuis le démarrage, et journalctl -o short-monotonic les affiche ainsi.

Dans les cours

Voir aussi