Est-il raisonnable de supposer que l'horloge CLOCK_MONOTONIC est disponible sur tous les serveurs Linux modernes ?
Oui. Il est raisonnable de supposer que.
D'après le libellé de l'entrée du manuel gettime, nous pouvons déduire que les très anciennes versions de glibc ne prennent pas en charge CLOCK_MONOTONIC
. (J'essaie toujours de déterminer l'âge ... mais probablement quand la glibc a revendiqué la conformité POSIX 1003.1.)
CLOCK_MONOTONIC
a été spécifié (au moins) dans IEEE Std 1003.1, édition 2004, bien qu'il reste possible qu'une implémentation libc conforme ne supporte pas CLOCK_MONOTONIC
.
Le code source du noyau Linux a pris en charge un CLOCK_MONOTONIC
horloge au moins depuis Linux 3.0 (2011).
À partir d'autres sources, cela dépend également de la façon dont la glibc de votre système a été construite. (Lorsqu'il est construit avec des "minuteries émulées", CLOCK_MONOTONIC
n'est pas pris en charge.)
Voici quelques cas où il n'est pas pris en charge :
-
Il peut y avoir des problèmes avec certaines anciennes puces CPU; par exemple. https://bugzilla.redhat.com/show_bug.cgi?id=1499480
-
Il n'est pas pris en charge pour certaines (toutes ?) versions de Cygwin.
-
Il n'est pas pris en charge pour certaines (toutes ?) versions de uCLibc sur ARM.
C'est aussi possible pour CLOCK_MONOTONIC
à supporter mais bogué :
- Linux clock_gettime(CLOCK_MONOTONIC) étrange comportement non monotone
Est-il raisonnable de supposer que l'horloge CLOCK_MONOTONIC est disponible sur tous les serveurs Linux modernes ?
Je ne peux que commenter cette question. Oui, il est raisonnable que tous les systèmes de production que vous utilisez aient une horloge monotone à laquelle Linux sait accéder. Cela est également vrai pour les serveurs virtuels et conteneurs.
Une bonne ingénierie vous oblige à vérifier cela et à éliminer les erreurs si une hypothèse n'est pas respectée, mais je compterais sur cela au moment de la conception.