피드로 돌아가기
Quill vs spdlog: Which C++ Logger Is Better for Low-Latency Applications?
Dev.toDev.to
Backend

Formatting 지연 처리를 통한 Producer Thread Latency 최소화 설계

Quill vs spdlog: Which C++ Logger Is Better for Low-Latency Applications?

Odysseas2026년 6월 19일15advanced

Context

일반적인 Async Logging 구조에서도 사용자 메시지 Formatting과 Buffer 할당이 Producer Thread에서 수행되어 런타임 지연 발생. 특히 Low-Latency 시스템에서는 로그 기록 행위 자체가 Critical Path의 Latency Budget을 소모하는 병목 지점으로 작용.

Technical Solution

  • Formatting 시점을 Producer에서 Backend Worker Thread로 완전히 이관하여 호출 스레드의 작업량 최소화
  • 정적 Call-site Metadata 활용 및 인자값의 단순 Serialization을 통한 빠른 Queue 진입 설계
  • Shared Thread-pool Queue 대신 Per-thread SPSC Queue를 채택하여 Producer 간 Contention 원천 차단
  • Macro 기반의 Runtime Level Check를 통해 비활성 로그 레벨에서의 인자 평가(Argument Evaluation) 비용 제거
  • Backend Worker가 Queue에서 데이터를 Decode한 후 {fmt} Formatting을 수행하는 Deferring 구조 구현

- Latency-sensitive 시스템 설계 시 Formatting 작업의 수행 주체와 시점 검토 - Multi-producer 환경에서 Lock-free SPSC Queue 도입을 통한 경합 제거 가능성 확인 - Logging Macro 설계 시 Runtime Level Check를 통한 불필요한 함수 호출 및 인자 계산 방지 적용

원문 읽기