---
title: "Cloudflare Gen 13 서버: 캐시를 코어로 바꿔 성능 2배 달성한 이야기"
published: 2026-03-23T22:06:49.000Z
canonical: https://jeff.news/article/954
---
# Cloudflare Gen 13 서버: 캐시를 코어로 바꿔 성능 2배 달성한 이야기

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

## 문제: 캐시가 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 공식 프로세서로 확정함
- 하드웨어 검증 완료, 글로벌 엣지 네트워크에 대규모 배포 중
- 하드웨어-소프트웨어 공동 설계의 중요성을 잘 보여주는 사례임

## 핵심 포인트

- Gen 12(Genoa-X) 대비 Gen 13(Turin 9965)은 코어 수 2배(192코어)지만 코어당 L3 캐시가 12MB에서 2MB로 6배 감소
- NGINX+LuaJIT 기반 FL1은 L3 미스 시 50→350+사이클 페널티로 고부하 시 레이턴시 50% 이상 악화
- 하드웨어 튜닝, PQOS 등으로는 근본 해결이 안 돼서 Pingora/Oxy 기반 Rust 전면 재작성(FL2)으로 해결함
- FL2로 전환 후 Gen 12 대비 처리량 2배, 레이턴시 70% 감소, 성능/와트 50% 개선 달성
- Gen 13 서버는 글로벌 엣지 네트워크에 대규모 배포 중

## 인사이트

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