피드로 돌아가기
Under the Hood: How Redis 7.4's Threaded I/O Improves Throughput by 50% for 1M Ops per Second
Dev.toDev.to
Database

Redis 7.4 Threaded I/O 도입으로 처리량 52% 향상 및 p99 지연시간 38% 감소

Under the Hood: How Redis 7.4's Threaded I/O Improves Throughput by 50% for 1M Ops per Second

ANKUSH CHOUDHARY JOHAL2026년 4월 28일20advanced

Context

기존 Redis 아키텍처는 단일 스레드가 요청 읽기, 파싱, 실행, 응답 쓰기를 모두 처리하는 구조로 설계됨. 이로 인해 멀티코어 환경에서도 단일 코어 성능에 종속되는 처리량 병목 현상이 발생함.

Technical Solution

  • io-threads-do-reads yes 설정을 통한 전체 I/O 파이프라인의 워커 스레드 풀 위임 구조 설계
  • 각 I/O 스레드별 독립적인 epoll 인스턴스 운용을 통한 요청 처리 분산
  • 단순 Single-key 명령어를 I/O 스레드에서 직접 실행하여 메인 스레드 부하 최소화
  • Lock-free Ring Buffer를 통한 I/O 스레드와 메인 스레드 간의 Mutex 경합 제거
  • 복잡한 명령어(Lua 스크립트, 트랜잭션 등)만 메인 스레드로 전달하는 선택적 위임 전략 채택

Impact

  • 16-core AWS 인스턴스 기준 Mean Throughput 658k에서 1M ops/sec로 52% 증가
  • Write-heavy 워크로드의 p99 Latency 38% 감소
  • 메인 스레드 CPU 점유율 98%에서 68%로 최적화
  • 인프라 오버프로비저닝 해소를 통해 월 약 $22k 비용 절감 가능

Key Takeaway

단일 스레드의 단순성을 유지하면서도 I/O 집약적 작업과 연산 집약적 작업을 분리하여 멀티코어 활용도를 극대화한 하이브리드 스레딩 모델의 효율성 입증


- 인스턴스당 400k ops/sec 이상의 고부하 워크로드 여부 확인 - vCPU 4개 이상의 환경인지 확인 (4vCPU 미만 시 Context Switch 오버헤드로 성능 10~15% 저하) - 전체 요청 중 복잡한 명령어(Multi-key, Lua) 비중이 20% 미만인지 검토 - 스레드당 약 12MB의 추가 메모리 오버헤드(Ring Buffer) 수용 가능 여부 판단

원문 읽기