# 나노초 타임스탬프 충돌은 흔합니다.

> Clean Markdown view of GeekNews topic #9943. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=9943](https://news.hada.io/topic?id=9943)
- GeekNews Markdown: [https://news.hada.io/topic/9943.md](https://news.hada.io/topic/9943.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2023-07-23T10:11:24+09:00
- Updated: 2023-07-23T10:11:24+09:00
- Original source: [evanjones.ca](https://www.evanjones.ca/nanosecond-collisions.html)
- Points: 5
- Comments: 1

## Topic Body

- 현대 시스템에서 나노초 타임스탬프 충돌이 흔하며, 4개의 물리 코어에서 시계를 동시에 읽을 때 약 5%의 샘플에서 발생합니다.
- 원시 나노초 타임스탬프가 고유 식별자라고 가정하는 것은 안전하지 않습니다.
- Go로 작성된 테스트 프로그램을 사용하여 연속적인 타임스탬프와 절대 타임스탬프의 상대적 차이를 비교했습니다.
- 타임스탬프 충돌의 동작은 시스템에 따라 다르며, Mac OS X와 Linux에서 다른 결과가 관찰되었습니다.
- Linux에서는 단일 스레드 내에서 절대 시간과 단조 시간이 항상 증가하며, 최소 증분은 32 ns입니다. 스레드 간에는 약 5%의 절대 시간이 다른 스레드와 동일하며, 4 코어 시스템에서 2개의 스레드로 작업할 때에도 약 2%의 타임스탬프 충돌이 발생합니다.
- Mac OS X에서는 절대 시간이 마이크로초 해상도를 가지므로 동일한 테스트를 반복할 때 많은 충돌이 발생합니다. 심지어 스레드 내에서도 단조 시계가 때로는 증가하지 않을 수 있습니다.
- 추가 탐색을 위해 테스트 프로그램은 Github에서 찾을 수 있습니다.

## Comments



### Comment 17555

- Author: neo
- Created: 2023-07-23T10:11:24+09:00
- Points: 1

###### [Hacker News 의견](http://news.ycombinator.com/item?id=36810818) 
- 시간 구성 요소와 일련 번호를 결합한 ID를 사용하면 충돌을 방지할 수 있습니다.
- UUIDv7은 시간 구성 요소와 일련 번호를 결합한 ID의 예입니다.
- 스레드 스케줄링은 멀티 코어 시스템에서 타임스탬프의 정확성에 영향을 줄 수 있습니다.
- 버전 4 (랜덤) UUID는 고유 식별자를 보장하기 위해 사용될 수 있습니다.
- 일부 사람들은 충돌 문제를 시간 확인과 전역 변수의 원자적 테스트 및 설정으로 해결합니다.
- Erlang/Elixir는 단조적 및 엄격한 단조적 시간을 구분합니다.
- 컴퓨터 시계는 나노초 정밀도를 가지지 않을 수 있습니다.
- Lotus Notes가 고유 ID로 1초 해상도의 타임스탬프를 사용하는 전설이 있습니다.
- CPU 클록 사이클과 컴파일러 최적화는 타임스탬프의 정밀도에 영향을 줄 수 있습니다.
- 정확한 시간은 보안 문제가 될 수 있으므로 CPU 설계자들은 일부로 클록 지터를 도입합니다.
