Quelle est la différence entre horloge monotone et horloge monotone RAW?

selon la page de manuel de Linux sous Ubuntu

CLOCK_MONOTONIC
      Clock that cannot be set and  represents  monotonic  time  since
      some unspecified starting point.

CLOCK_MONOTONIC_RAW (since Linux 2.6.28; Linux-specific)
      Similar  to  CLOCK_MONOTONIC, but provides access to a raw hard‐
      ware-based time that is not subject to NTP adjustments.

selon le Webster online dictionary monotone signifie:

2: ayant la propriété de ne jamais augmenter ou de ne jamais décroissant comme les valeurs de la variable indépendante ou les indices des termes augmentent.

en d'autres termes, il ne va pas sauter en arrière. Je peux voir que ce serait une propriété importante si vous chronométriez certains code.

cependant, la différence entre la version normale et la version brute n'est pas claire. Quelqu'un peut-il nous éclairer sur la façon dont le NTP peut encore affecter CLOCK_MONOTONIC?

28
demandé sur Matt 2013-01-11 05:37:29

2 réponses

CLOCK_MONOTONIC ne connaît jamais de discontinuités dues à des ajustements de temps du NTP, mais il changement de fréquence pendant que NTP apprend quelle erreur existe entre l'oscillateur local et les serveurs amont.

CLOCK_MONOTONIC_RAW est simplement l'oscillateur local, non discipliné par le NTP. Cela pourrait être très utile si vous voulez implémenter un autre algorithme de synchronisation temporelle contre une horloge qui ne vous combat pas à cause de NTP. La mise en œuvre du ntpd (la référence de la mise en œuvre du NTP protocole et le démon NTP le plus répandu) est réputé être "doux" avec des ajustements de temps, il est plus précis de dire qu'il est doux avec le temps absolu. Il est prêt à faire tourner l'horloge de 500ppm, ce qui est assez dramatique si vous êtes en mesure de mesurer votre fréquence d'horloge par rapport à un autre standard.

l'utilité de CLOCK_MONOTONIC_RAW sera limité jusqu'à ce que des installations comme pthread_timedwait_monotonic offre une option pour utiliser cette base de temps.

27
répondu Ben Jackson 2016-04-07 22:03:00

ntpd ne cause pas le temps d' saut si la différence est inférieure à un certain seuil. adjtime-like adjustment est utilisé à la place, affectant les deux CLOCK_MONOTONIC et CLOCK_REALTIME (mais pas CLOCK_MONOTONIC_RAW, apparemment).

2
répondu Anton Kovalenko 2013-01-11 01:43:33