Rust 동시성 함정: 원자 카운터로 인한 병목 현상

2025-06-10
Rust 동시성 함정: 원자 카운터로 인한 병목 현상

Conviva의 스트리밍 분석 플랫폼은 전역적으로 공유되는 형식 레지스트리 내에 있는, 보기에는 무해한 원자 카운터로 인해 성능 병목 현상을 겪었습니다. 이 레지스트리는 동시 해시 맵(Flashmap)을 사용했습니다. 높은 동시성 하에서 원자 카운터의 업데이트는 캐시 라인 바운싱과 과도한 컨텍스트 스위칭을 야기하여 P99 지연 시간이 급증했습니다. Flashmap을 Dashmap으로 바꿔도 문제는 해결되지 않았고, 결국 RCU 메커니즘을 사용하는 ArcSwap을 사용하여 문제를 해결했습니다. 이 사례는 특히 읽기가 많은 상황에서 높은 동시성 시나리오에서 적절한 데이터 구조를 선택하는 것이 얼마나 중요한지를 강조합니다. ArcSwap의 높은 효율성이 두드러집니다.

더 보기
개발