Quelle est la différence entre CLOCK_MONOTONIC & CLOCK_MONOTONIC_RAW?
Selon le Linux page de man 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 webster online dictionary Monotone signifie:
2: ayant la propriété de ne jamais augmenter ou de ne jamais
diminuer à mesure que les valeurs de la variable indépendante ou les indices
les termes d'augmentation.
En d'autres termes, il ne sera pas saut en arrière. Je peux voir que ce serait une propriété importante si vous étiez timing un peu de code.
Cependant, la différence entre le normal et la première version n'est pas clair. Quelqu'un peut-il apporter quelques lumières sur la façon dont NTP peut affecter CLOCK_MONOTONIC?
Vous devez vous connecter pour publier un commentaire.
CLOCK_MONOTONIC
jamais les expériences des discontinuités dues à temps NTP ajustements, mais il ne changement dans la fréquence que NTP apprend quelle est l'erreur existe entre l'oscillateur local et les serveurs en amont.CLOCK_MONOTONIC_RAW
est tout simplement l'oscillateur local, pas discipliné par le NTP. Cela pourrait être très utile si vous souhaitez mettre en œuvre une autre fois algorithme de synchronisation à l'encontre d'une horloge qui n'est pas vous combattre en raison de NTP. Alors que ntpd (la référence de la mise en œuvre du protocole NTP et le plus répandu démon NTP) est réputé pour être "gentil" avec les ajustements en temps, il est plus juste de dire qu'il est très doux avec le temps absolu. Il est prêt à flopée de l'horloge par 500ppm ce qui est assez dramatique, si vous êtes dans une position pour mesurer votre fréquence d'horloge contre une autre norme.L'utilitaire de
CLOCK_MONOTONIC_RAW
va être limitée jusqu'à ce que des installations commepthread_timedwait_monotonic
offrir une option pour utiliser une base de temps.CLOCK_MONOTONIC
est affecté. Il serait très agréable si une source faisant autorité pourrait aussi être la compensation de la différence.CLOCK_MONOTONIC
est affectée par l'horloge taux changements (viaadjtimex
) mais pas de sauts. L'autre réponse ne parle que de la non-jump cas.adjtime
; l'ancien étant un ajustement du taux de correspondre au taux d'intérêt réel plus correctement, et le dernier étant un intentionnelle de l'aberration de la taux réel afin d'ajuster le temps absolu (qui ne devrait affecterCLOCK_REALTIME
, plutôt que deCLOCK_MONOTONIC
, non?).CLOCK_REALTIME
parce que c'est beaucoup plus populaire de l'horloge. Lorsque vous demandezCLOCK_MONOTONIC
il s'applique un décalage (essentiellement le démarrage). Lorsque l'horloge est intervenu l'équivalent anti-étape est ajoutée à l'offset, de sorte que la monotone de l'horloge n'est pas perturbé. Lorsque l'horloge est réglée ou de chargement pivote (dont les effets sont mélangés dans le noyau) il n'y a pas de contre-ajustement en temps réel de décalage, de sorte que son changement de fréquence.CLOCK_MONOTONIC_RAW
(car il n'utilise pas le vDSO et fait un véritable syscall) en comparaison àCLOCK_MONOTONIC
(voir stackoverflow.com/a/13096917/9109338 et btorpey.github.io/blog/2014/02/18/horloge-sources-de-linux ). Si la surcharge de faire l'appel des questions pour vous, alors c'est une plate-forme+spécifiques à l'architecture chose à garder à l'esprit...ntpd
ne cause pas le temps de sauter si la différence est inférieure à un certain seuil. adjtime-comme le réglage est utilisé au lieu de cela, affectant à la foisCLOCK_MONOTONIC
etCLOCK_REALTIME
(mais pasCLOCK_MONOTONIC_RAW
, apparemment).