Shared-nothing 아키텍처가 Shared io_context(뮤텍스/Lock-Free) 모델 대비 코어 수에 비례하는 선형 확장을 달성하고, 고코어 서버에서 격차가 극대화됨을 증명하는 벤치마크
| Workers | Per-core (msg/s) | Shared (msg/s) | Lock-Free (msg/s) | Per-core / Shared |
|---|
이 벤치마크의 핵심 교훈은 명확하다: lock 최적화의 한계. Shared 모델은 뮤텍스 샤딩(v0.5.10)과 Lock-Free CAS(v0.6.1) 두 가지 최적화를 적용했지만, 그 아래에 있는 io_context 내부 큐의 단일 뮤텍스가 진짜 병목이었다. 아무리 상위 레벨의 lock을 최적화해도 하위 레벨에 공유 뮤텍스가 남아있으면 Amdahl의 법칙에 의해 확장성은 제한된다.
Per-core 아키텍처는 이 문제를 근본적으로 해결한다. 각 워커가 자신만의 io_context를 소유하므로 큐 경합 자체가 발생하지 않는다. 4코어 환경에서 2.1배였던 격차는 20코어에서 5.3배로 확대되었으며, 이는 코어 수가 증가할수록 격차가 발산함을 의미한다. 이것이 Apex Pipeline이 shared-nothing 아키텍처를 채택한 근본적인 이유다.