5 पॉइंट द्वारा GN⁺ 2023-07-23 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • आधुनिक सिस्टमों में नैनोसेकंड timestamp collision आम हैं, और 4 physical cores पर clock को एक साथ पढ़ने पर लगभग 5% samples में यह होता है.
  • यह मान लेना सुरक्षित नहीं है कि raw nanosecond timestamps unique identifiers हैं.
  • Go में लिखे गए test program का उपयोग करके लगातार timestamps और absolute timestamps के relative difference की तुलना की गई.
  • timestamp collision का व्यवहार सिस्टम के अनुसार अलग होता है, और Mac OS X तथा Linux पर अलग परिणाम देखे गए.
  • Linux में single thread के भीतर absolute time और monotonic time हमेशा बढ़ते हैं, और न्यूनतम increment 32 ns है. Threads के बीच लगभग 5% absolute time दूसरे thread के समान होता है, और 4-core सिस्टम पर 2 threads के साथ काम करने पर भी लगभग 2% timestamp collisions होते हैं.
  • Mac OS X में absolute time की resolution microsecond है, इसलिए वही test दोहराने पर बहुत अधिक collisions होते हैं. यहाँ तक कि thread के भीतर भी monotonic clock कभी-कभी बढ़ नहीं सकती.
  • आगे की जाँच के लिए test program Github पर मिल सकता है.

1 टिप्पणियां

 
GN⁺ 2023-07-23
Hacker News की राय
  • समय घटक और serial number को मिलाकर बने ID का उपयोग करने से collision से बचा जा सकता है।
  • UUIDv7 समय घटक और serial number को मिलाकर बने ID का एक उदाहरण है।
  • multi-core system में thread scheduling timestamp की सटीकता को प्रभावित कर सकती है।
  • unique identifier सुनिश्चित करने के लिए version 4 (random) UUID का उपयोग किया जा सकता है।
  • कुछ लोग collision की समस्या को time check और global variable के atomic test-and-set से हल करते हैं।
  • Erlang/Elixir monotonic और strictly monotonic time में अंतर करता है।
  • computer clock में nanosecond precision नहीं भी हो सकती है।
  • एक मशहूर किस्सा है कि Lotus Notes unique ID के रूप में 1-second resolution वाले timestamp का उपयोग करता था।
  • CPU clock cycle और compiler optimization timestamp की precision को प्रभावित कर सकते हैं।
  • सटीक समय security issue बन सकता है, इसलिए CPU designers जानबूझकर कुछ clock jitter शामिल करते हैं।