¿Es razonable suponer que el reloj CLOCK_MONOTONIC está disponible en todos los servidores Linux modernos?
Sí. Es razonable asumir eso.
De la redacción de la entrada manual de gettime, podemos inferir que las versiones realmente antiguas de glibc no son compatibles con CLOCK_MONOTONIC
. (Todavía estoy tratando de averiguar cuántos años... pero probablemente cuando glibc reclamó el cumplimiento de POSIX 1003.1).
CLOCK_MONOTONIC
se especificó (al menos) en IEEE Std 1003.1, edición de 2004, aunque sigue siendo posible que una implementación de libc compatible no admita CLOCK_MONOTONIC
.
El código fuente del kernel de Linux ha tenido soporte para un CLOCK_MONOTONIC
reloj al menos desde Linux 3.0 (2011).
De otras fuentes, también depende de cómo se construyó la glibc de su sistema. (Cuando se construye con "temporizadores emulados", CLOCK_MONOTONIC
no es compatible.)
Estos son algunos casos en los que no es compatible:
-
Puede haber problemas con algunos chips de CPU antiguos; p.ej. https://bugzilla.redhat.com/show_bug.cgi?id=1499480
-
No es compatible con algunas (¿todas?) versiones de Cygwin.
-
No es compatible con algunas (¿todas?) versiones de uCLibc en ARM.
También es posible para CLOCK_MONOTONIC
para ser compatible pero con errores:
- Linux clock_gettime(CLOCK_MONOTONIC) extraño comportamiento no monotónico
¿Es razonable suponer que el reloj CLOCK_MONOTONIC está disponible en todos los servidores Linux modernos?
Solo puedo comentar sobre esta pregunta. Sí, es razonable que todos los sistemas de grado de producción que utilice tengan un reloj monótono al que Linux sabe cómo acceder. Esto también se aplica a los servidores virtuales y de contenedores.
La buena ingeniería dicta que debe verificar esto y eliminar el error si se rompe una suposición, pero contaría con esto en el momento del diseño.