Cloudflare, 1.1.1.1 DNS 캐시 최적화로 약 100 TB RAM 확보 (2026)
Cloudflare · 1.1.1.1 · DNS · Rust

Cloudflare가 2026년 가장 구체적인 시스템 엔지니어링 글 중 하나를 공개했습니다. Rust에서 DNS 캐시 항목 메모리 레이아웃을 다듬어 1.1.1.1 을 구동하는 전 세계 플릿에서 약 100 TB RAM 을 확보했습니다——서버를 추가하지 않았고, 메모리 절감을 위해 조회를 느리게 만들지도 않았습니다.
2026년 8월 27일 엔지니어링 포스트에서 Sebastiaan Neuteboom은 Big Pineapple(1.1.1.1, Gateway DNS, DNS Firewall, AS112 등 공용 해석 플랫폼)에 대한 다섯 단계 레이아웃 변경을 설명했습니다. TechSpot, GIGAZINE, 개발자 애그리게이터도 같은 숫자를 전했습니다.
핵심 요약
Cloudflare 원문과 후속 보도의 핵심 숫자—플랫폼 규모, 엔트리당 절감, 성능 향상, 프로덕션 롤아웃 기간—을 한 표로 정리했습니다.
| 항목 | 내용 |
|---|---|
| 플랫폼 | Big Pineapple — 1.1.1.1 및 기타 Cloudflare DNS |
| 규모 | 플릿 동시 2500억+ 캐시 엔트리 |
| 엔트리당 점유 | 953 → 420 bytes (−56%) |
| 엔트리당 할당 | 1.1 KB → 461 bytes (−58%) |
| 플릿 RAM 확보 | 약 100 TB (Gen 13 서버 약 130대 분량) |
| 삽입 처리량 | +43% (625k → 893k entries/s) |
| 조회 지연 | −19% (828 ns → 670 ns) |
| 프로덕션 p99 메모리 | 9.3 → 5.3 GB (−43%) |
| 롤아웃 | 2026년 5월 18일 – 7월 6일 |
DNS 규모에서 몇 바이트가 비싼 이유
Big Pineapple은 거대한 인메모리 캐시를 둡니다. 콜드 스타트에는 비어 있고, 쿼리로 채워진 뒤 지역별 한도에서 오래된/덜 인기 있는 항목을 제거합니다.
2500억 이상 동시 엔트리에서는 엔트리당 1바이트 낭비가 플릿 전체 250 GB 이상 RAM입니다. EDNS Client Subnet(ECS)를 쓰는 데이터센터에서는 같은 쿼리 이름도 클라이언트 망별로 다른 답을 캐시해 부담이 더 큽니다.
한 번 쓰고 초당 수백만 번 읽는 구조에서는 성장형 Vec / String 이 “공짜”가 아닙니다.
다섯 가지 Rust 레이아웃 변경
리졸버 전체를 다시 쓴 것이 아니라 캐시 표현을 조였습니다——다섯 단계, 배포하며 측정.
1. 쓰이지 않는 capacity 제거
삽입 후 성장하지 않으므로 Vec / String 을 Box<[T]> / Box<str> 로 교체. capacity와 과할당 제거——8개 필드에서 약 64 bytes, 힙 낭비 포함. 이 단계만으로 15 TB 이상.
2. 리스트·포인터 축소
Answer / authority / additional를 하나의 리스트와 u16 오프셋으로 통합——엔트리당 약 28 bytes, 플래그 패킹으로 패딩도 회수.
3. 선택적 owner 이름
대부분 레코드 owner는 쿼리 이름과 같습니다. Option 으로 공통 케이스는 캐시 키에서 복원하고, CNAME류 분기만 힙에 보관.
4. 큰 enum 변형 Box
RecordData 는 드문 대형 타입(NAPTR ~136 bytes)에 맞춰 비대해졌습니다. 대형을 Box하면 흔한 A/AAAA가 약 144 bytes 세금을 내지 않습니다.
5. 와이어 포맷 바이트
최대 성과: 길이 접두 원시 DNS 와이어를 연속 Box<[u8]> 에 저장. 대부분 A/AAAA/TXT/DNSSEC는 응답으로 memcpy 가능하고, 지역성이 좋아지며 boxing 비용도 거의 사라집니다.
벤치마크와 프로덕션 결과
합성 채움(약 56% A, 25% AAAA, 19% TXT 대용)과 롤아웃 중 실제 상주 메모리를 모두 공개했습니다.
| 지표 | 이전 | 이후 | 변화 |
|---|---|---|---|
| 엔트리 순 점유 | 953 bytes | 420 bytes | −56% |
| 엔트리 할당량 | 1.1 KB | 461 bytes | −58% |
| 캐시 삽입 처리량 | 625,000 /s | 893,000 /s | +43% |
| 캐시 조회 지연 | 828 ns | 670 ns | −19% |
| 인스턴스 메모리(p99) | 9.3 GB | 5.3 GB | −43% |
| 인스턴스 메모리(p90) | 6.5 GB | 3.8 GB | −42% |
| 플릿 working-set RAM | — | −약 100 TB | ≈ Gen 13 ×130 |
프로덕션 절감은 순수 엔트리 계산보다 작을 수 있습니다——프로세스 RSS에는 캐시 외 상태도 포함되기 때문에 Cloudflare는 둘 다 공개했습니다.
확보한 메모리는 어디에?
유휴 RAM을 쌓아 두지 않습니다. 같은 메모리 예산으로 캐시 용량을 늘리는 재투자——적중률 향상과 업스트림 쿼리 감소. 캐시 구조 추가 최적화도 검토 중입니다.
인메모리 핫 패스에서는 레이아웃 점검의 목표가 청구서 절감만이 아니라 용량과 지연을 함께 개선하는 경우가 많다는 메시지이기도 합니다.
DNS를 넘어 중요한 이유
한 번만 쓰는 컬렉션
생성 후 늘지 않으면 고정 슬라이스가 유리합니다. 수십억 객체에서는 capacity와 과할당이 실제 비용이 됩니다.
드문 대형 변형
enum/union은 최대 변형 기준입니다. 드문 거인을 Box해 흔한 작은 케이스를 밀도 있게.
핫 패스용 직렬화
대부분 바이트를 그대로 다시 내보내면, 풍부한 파싱 구조보다 와이어/직렬화 버퍼가 메모리·CPU 모두에서 유리할 수 있습니다.
임베딩 캐시, feature store, 세션 상태 등 프로세스 내 인덱스에도 같은 직관이 적용됩니다.
FAQ
무엇을 바꿨는지, 속도가 느려졌는지, 롤아웃이 얼마나 걸렸는지, “100 TB”가 단일 서버인지 플릿인지—짧은 답만 필요하면 여기서 확인하세요.
| 질문 | 답 |
|---|---|
| Cloudflare가 무엇을 최적화했나? | Big Pineapple(1.1.1.1 등) DNS 캐시 항목의 인메모리 레이아웃. |
| RAM을 줄이며 느려졌나? | 아니요——삽입 +43%, 조회 지연 −19%. |
| 프로덕션 롤아웃 기간은? | 2026년 5월 18일~7월 6일, 단계 배포. |
| “100 TB”는 단일 서버? | 플릿 전체 working-set 감소. |
출처
- Cloudflare Blog — How we saved 100 terabytes of memory by optimizing 1.1.1.1’s DNS cache
- TechSpot — Cloudflare freed up 100TB of RAM behind 1.1.1.1
- GIGAZINE — Cloudflare DNS cache optimization coverage
최신 소식을 받아보세요
뉴스와 업데이트를 가장 먼저 확인하세요

