5 Punkte von GN⁺ 2023-07-23 | 1 Kommentare | Auf WhatsApp teilen
  • In modernen Systemen sind Kollisionen bei Nanosekunden-Zeitstempeln häufig und treten in etwa 5 % der Samples auf, wenn die Uhr gleichzeitig auf vier physischen Kernen gelesen wird.
  • Es ist nicht sicher anzunehmen, dass rohe Nanosekunden-Zeitstempel eindeutige Identifikatoren sind.
  • Mit einem in Go geschriebenen Testprogramm wurden die relativen Unterschiede zwischen aufeinanderfolgenden Zeitstempeln und absoluten Zeitstempeln verglichen.
  • Das Verhalten von Zeitstempel-Kollisionen variiert je nach System; auf Mac OS X und Linux wurden unterschiedliche Ergebnisse beobachtet.
  • Unter Linux nehmen absolute Zeit und monotone Zeit innerhalb eines einzelnen Threads immer zu, und das minimale Inkrement beträgt 32 ns. Zwischen Threads ist in etwa 5 % der Fälle die absolute Zeit identisch mit der eines anderen Threads, und selbst bei der Arbeit mit zwei Threads auf einem 4-Core-System treten noch etwa 2 % Zeitstempel-Kollisionen auf.
  • Unter Mac OS X hat die absolute Zeit eine Mikrosekunden-Auflösung, weshalb bei Wiederholung desselben Tests viele Kollisionen auftreten. Sogar innerhalb eines Threads kann es vorkommen, dass die monotone Uhr manchmal nicht zunimmt.
  • Für weitere Untersuchungen ist das Testprogramm auf Github zu finden.

1 Kommentare

 
GN⁺ 2023-07-23
Hacker-News-Kommentar
  • Durch die Verwendung von IDs, die eine Zeitkomponente und eine Sequenznummer kombinieren, lassen sich Kollisionen vermeiden.
  • UUIDv7 ist ein Beispiel für eine ID, die eine Zeitkomponente und eine Sequenznummer kombiniert.
  • Das Thread-Scheduling kann die Genauigkeit von Zeitstempeln auf Multicore-Systemen beeinflussen.
  • UUIDs der Version 4 (zufällig) können verwendet werden, um eindeutige Bezeichner sicherzustellen.
  • Manche lösen das Kollisionsproblem durch Zeitprüfung sowie atomares Test-and-Set einer globalen Variable.
  • Erlang/Elixir unterscheidet zwischen monotoner und streng monotoner Zeit.
  • Computertakte verfügen möglicherweise nicht über Nanosekundenpräzision.
  • Es gibt die Legende, dass Lotus Notes Zeitstempel mit einer Auflösung von 1 Sekunde als eindeutige ID verwendet.
  • CPU-Taktzyklen und Compiler-Optimierungen können die Präzision von Zeitstempeln beeinflussen.
  • Exakte Zeit kann ein Sicherheitsproblem sein, daher führen CPU-Designer absichtlich Clock Jitter ein.