본문으로 건너뛰기
피드

Cloudflare Gen 13 서버: 캐시를 코어로 바꿔 성능 2배 달성한 이야기

backend 약 4분

Cloudflare가 AMD Turin 9965(192코어) 기반 Gen 13 서버를 배포함. 코어당 L3 캐시가 6배 줄어 레거시 NGINX 스택(FL1)으로는 레이턴시 50% 악화가 불가피했으나, Rust로 전면 재작성한 FL2로 전환해 Gen 12 대비 처리량 2배, 성능/와트 50% 개선을 달성함.

  • 1

    Gen 12(Genoa-X) 대비 Gen 13(Turin 9965)은 코어 수 2배(192코어)지만 코어당 L3 캐시가 12MB에서 2MB로 6배 감소

  • 2

    NGINX+LuaJIT 기반 FL1은 L3 미스 시 50→350+사이클 페널티로 고부하 시 레이턴시 50% 이상 악화

  • 3

    하드웨어 튜닝, PQOS 등으로는 근본 해결이 안 돼서 Pingora/Oxy 기반 Rust 전면 재작성(FL2)으로 해결함

  • 4

    FL2로 전환 후 Gen 12 대비 처리량 2배, 레이턴시 70% 감소, 성능/와트 50% 개선 달성

  • 5

    Gen 13 서버는 글로벌 엣지 네트워크에 대규모 배포 중

문제: 캐시가 6분의 1로 줄었음

  • Gen 12는 AMD Genoa-X 프로세서로 3D V-Cache 덕에 코어당 L3 캐시가 12MB였음
  • Gen 13 후보인 Turin 9965는 192코어로 코어 수가 2배지만, 코어당 L3는 2MB에 불과함. 캐시가 6배 줄어든
  • L3 캐시 히트는 약 50사이클인데 미스 나면 DRAM까지 가야 해서 350사이클 이상 소요. 7배 페널티

FL1(레거시 스택)으로는 안 됐음

  • FL1은 NGINX + LuaJIT 기반 레거시 요청 처리 레이어임
  • Turin 9965에서 FL1 성능: 처리량은 +62%였지만 고부하 시 레이턴시가 50% 이상 악화 — 서비스 품질 기준 미달
  • AMD와 협업해서 하드웨어 프리페처 조정, 워커 스케일링, CPU 피닝 등 다양한 최적화를 시도했지만 효과가 미미했음
  • AMD PQOS로 CCD 전체를 FL1에 전담 할당하니 의미 있는 개선이 나왔지만 근본 해결은 아니었음

FL2: Rust 전면 재작성이 답이었음

  • FL2는 15년 된 NGINX/LuaJIT 코드를 Pingora/Oxy 프레임워크 기반 Rust로 완전 재작성한 것
  • 원래 캐시 문제를 풀려고 만든 게 아님. 메모리 안전성, 개발 속도, 모듈성을 위해 시작한 프로젝트였음
  • 그런데 FL2의 깔끔한 메모리 접근 패턴이 대용량 L3 캐시 의존도를 없애버림

FL2 + Turin 9965 결과

  • CPU% 대비 요청 처리량: FL1 대비 50% 향상
  • Gen 12 대비 레이턴시: 70% 감소
  • Gen 12 대비 처리량: 2배 (FL1으로는 62%가 한계였음)
  • 성능/와트: Gen 12 대비 50% 개선
  • 랙당 처리량: Gen 12 대비 60% 증가 (동일 전력 예산 내)

배포 현황

  • AMD EPYC Turin 9965(192코어/384스레드)를 Gen 13 공식 프로세서로 확정함
  • 하드웨어 검증 완료, 글로벌 엣지 네트워크에 대규모 배포 중
  • 하드웨어-소프트웨어 공동 설계의 중요성을 잘 보여주는 사례임

하드웨어 세대 교체에서 소프트웨어 스택이 병목이 되는 전형적인 사례임. 캐시 의존적인 레거시 코드가 새 하드웨어의 잠재력을 절반밖에 못 끌어냈고, Rust 재작성이 메모리 접근 패턴 자체를 바꿔서 하드웨어와 소프트웨어 양쪽의 이점을 동시에 실현함. 15년 된 NGINX 스택을 걷어내는 결단이 인프라 비용에 직접적 영향을 준 케이스임.

댓글

댓글

댓글을 불러오는 중...

backend

Cloudflare가 잡아낸 QUIC CUBIC 버그, ‘idle’ 한 줄 오판이 다운로드를 죽였다

Cloudflare의 QUIC 구현체 quiche에서 CUBIC 혼잡 제어가 최소 윈도우에 갇혀 회복하지 못하는 버그가 발견됐다. Linux 커널의 idle 최적화를 QUIC에 옮기는 과정에서 TCP와 QUIC의 이벤트 타이밍 차이를 놓쳤고, 결국 ACK 시점을 기준으로 idle 시간을 재도록 고쳐 100% 테스트 통과를 회복했다.

backend

삼성전자가 반도체 개발 조직에 오라클 자바를 공식 채택한 이유

삼성전자 DS 부문이 글로벌 반도체 개발 환경에 오라클 자바 SE 유니버설 서브스크립션을 공식 채택했다. 서로 다른 자바 배포판과 버전이 섞이면서 생길 수 있는 보안, 컴플라이언스, 라이선스 리스크를 줄이고 개발 환경을 표준화하려는 결정이다.

backend

네이버클라우드, 트래픽 따라 알아서 줄고 느는 서버리스 데이터베이스 출시

네이버클라우드가 사용량에 따라 CPU, 메모리, 스토리지를 자동 조절하는 완전관리형 서버리스 데이터베이스 서비스를 내놨다. 기존 가상머신 기반 관리형 데이터베이스처럼 피크 트래픽에 맞춰 서버를 과하게 잡아두는 방식에서 벗어나, 사용량 기반 과금과 오토스케일링으로 비용 낭비를 줄이겠다는 방향이다.

backend

네이버클라우드, 사용량 따라 늘고 줄어드는 서버리스 데이터베이스 출시

네이버클라우드가 완전관리형 서버리스 데이터베이스 서비스인 Cloud DB Serverless를 출시했다. VM 기반 관리형 데이터베이스의 고정 비용과 과잉 프로비저닝 문제를 줄이고, 트래픽에 따라 CPU·메모리·스토리지를 자동 조절하는 구조를 내세운다.

backend

네이버클라우드, 사용량 따라 자동 확장되는 서버리스 데이터베이스 출시

네이버클라우드가 사용량에 따라 컴퓨팅 자원을 자동 조절하는 서버리스 기반 클라우드 데이터베이스를 출시했음. 기존 가상머신 기반 관리형 데이터베이스의 고정 비용과 운영 부담을 줄이고, 국내 데이터 규제 요구까지 맞추겠다는 전략임.