ナノ秒タイムスタンプの衝突はよくあります。
(evanjones.ca)- 現代のシステムではナノ秒タイムスタンプの衝突は珍しくなく、4つの物理コアで同時にクロックを読むと、約5%のサンプルで発生します。
- 生のナノ秒タイムスタンプが一意な識別子であると仮定するのは安全ではありません。
- Goで書かれたテストプログラムを使って、連続するタイムスタンプと絶対タイムスタンプの相対的な差を比較しました。
- タイムスタンプ衝突の挙動はシステムによって異なり、Mac OS XとLinuxで異なる結果が観察されました。
- Linuxでは、単一スレッド内で絶対時間と単調時間は常に増加し、最小増分は32 nsです。スレッド間では約5%の絶対時間が他のスレッドと同一であり、4コアシステムで2つのスレッドで実行した場合でも約2%のタイムスタンプ衝突が発生します。
- Mac OS Xでは、絶対時間がマイクロ秒解像度を持つため、同じテストを繰り返すと多くの衝突が発生します。さらに、スレッド内であっても単調クロックが増加しないことがあります。
- 追加の調査のためのテストプログラムはGithubで見つけられます。
1件のコメント
Hacker Newsの意見