5 puntos por GN⁺ 2023-07-23 | 1 comentarios | Compartir por WhatsApp
  • En los sistemas modernos, los choques de marcas de tiempo de nanosegundos son comunes y ocurren en aproximadamente el 5% de las muestras cuando se lee el reloj simultáneamente desde 4 núcleos físicos.
  • No es seguro asumir que una marca de tiempo cruda en nanosegundos sea un identificador único.
  • Se usó un programa de prueba escrito en Go para comparar la diferencia relativa entre marcas de tiempo consecutivas y marcas de tiempo absolutas.
  • El comportamiento de los choques de marcas de tiempo varía según el sistema, y se observaron resultados distintos en Mac OS X y Linux.
  • En Linux, dentro de un solo hilo, el tiempo absoluto y el tiempo monotónico siempre aumentan, y el incremento mínimo es de 32 ns. Entre hilos, aproximadamente el 5% de los tiempos absolutos son iguales a los de otro hilo, y también se producen alrededor de un 2% de choques de marcas de tiempo al trabajar con 2 hilos en un sistema de 4 núcleos.
  • En Mac OS X, como el tiempo absoluto tiene resolución de microsegundos, se producen muchos choques al repetir la misma prueba. Incluso dentro de un hilo, el reloj monotónico a veces puede no aumentar.
  • Para una exploración adicional, el programa de prueba se puede encontrar en Github.

1 comentarios

 
GN⁺ 2023-07-23
Comentarios en Hacker News
  • Usar un ID que combine un componente temporal y un número de serie puede evitar colisiones.
  • UUIDv7 es un ejemplo de un ID que combina un componente temporal y un número de serie.
  • La planificación de hilos puede afectar la precisión de las marcas de tiempo en sistemas multinúcleo.
  • Los UUID versión 4 (aleatorios) pueden usarse para garantizar identificadores únicos.
  • Algunas personas resuelven el problema de las colisiones con una verificación de tiempo y una prueba y asignación atómica de una variable global.
  • Erlang/Elixir distingue entre tiempo monotónico y tiempo estrictamente monotónico.
  • Los relojes de las computadoras pueden no tener precisión de nanosegundos.
  • Existe la leyenda de que Lotus Notes usa una marca de tiempo con resolución de 1 segundo como ID único.
  • Los ciclos de reloj de la CPU y las optimizaciones del compilador pueden afectar la precisión de las marcas de tiempo.
  • El tiempo preciso puede ser un problema de seguridad, por lo que los diseñadores de CPU introducen deliberadamente jitter de reloj.