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?
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.
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).