
에이전트 워크플로우의 캐시 유지 비용이 8배나 더 많이 드는 이유
요약
에이전트 워크플로우에서 프롬프트 캐시 유지를 위해 관습적으로 사용하는 30초 간격의 핑(ping) 방식이 실제로는 비용을 8배 높일 수 있음을 분석합니다. Anthropic, OpenAI, Gemini, DeepSeek를 대상으로 실험한 결과, 제공업체마다 캐시 유지 전략이 달라야 하며 Anthropic의 경우 약 4분 간격이 가장 효율적임을 밝힙니다.
핵심 포인트
- 30초 간격의 캐시 유지는 대부분의 제공업체에서 불필요한 비용을 발생시킴
- Anthropic은 약 4분 간격의 캐시 유지가 비용 절감에 가장 효과적임
- OpenAI와 Gemini는 긴 휴지기 상황에서 캐시 유지로 인한 이득이 없음
- DeepSeek의 경우 캐시 유지가 비용 절감보다는 지연 시간 단축에 기여함
- 제공업체별 캐시 만료 정책에 맞춘 개별적인 Keepalive 전략이 필요함
캐시 유지(cache keepalive)는 모든 에이전트 빌더가 동의하는 유일한 최적화 방법이지만, 거의 모든 사람이 잘못된 설정으로 이를 실행하고 있습니다.
관습적으로는 30초마다 핑(ping)을 보내는 방식이 통용됩니다. 하지만 이 관습은 필요 이상으로 8배 더 많은 비용을 발생시키며, 더 놀라운 사실은 제가 측정한 10분의 휴지기 동안 4개의 주요 제공업체 중 단 한 곳만이 캐시 유지로 비용을 절감했다는 점입니다. 저는 Anthropic, OpenAI, Gemini, DeepSeek를 대상으로 자체 타이밍을 증명할 수 있는 하네스(harness)를 사용하여 측정했으며, 그 결과는 저의 몇 가지 믿음을 바꾸어 놓았습니다. 적절한 간격은 30초가 아니라 약 4분입니다. 30초 간격의 캐시 유지는 제가 테스트한 모든 제공업체에서 긴 공백이 발생할 때 오히려 돈을 잃게 만듭니다. Anthropic의 경우, 4분 간격의 캐시 유지는 실제로 비용을 절감합니다. DeepSeek에서는 비용 절감이 아닌 지연 시간(latency)을 사는 셈이 됩니다. OpenAI와 Gemini에서는 이러한 공백 상황에서 아무런 이득도 얻지 못합니다. 캐시를 따뜻하게(warm) 유지할지 여부는 보편적인 결정이 아니라 제공업체별로 결정해야 할 문제입니다.
캐시를 잡아먹는 휴지기
제공업체의 프롬프트 캐시(prompt caches)는 API에서 가장 유리한 거래 중 하나입니다. 서버가 방금 처리한 접두사(prefix)를 보내면 입력 가격의 약 10분의 1만 지불하면서 대부분의 프리필(prefill) 지연 시간을 건너뛸 수 있습니다. 하지만 캐시는 몇 분 안에 만료되며, 에이전트 워크로드(agentic workloads)는 이를 사용하기에 가장 최악의 조건입니다. 에이전트는 생각하고, 행동하고, 기다립니다. 요청을 보낸 후 빌드나 테스트 스위트를 실행하거나, 인간의 승인을 기다리며 10분 동안 머물러 있다가, 그제서야 (이제는 커져 버린) 대화 접두사를 재사용할 수 있었던 후속 요청을 보냅니다. 이 휴지기는 캐시의 수명보다 깁니다. 결국 후속 요청은 전체 가격과 전체 지연 시간을 지불하게 되며, 에이전트 규모에서는 이것이 실제 비용 항목으로 나타납니다.
이에 대한 방어책은 잘 알려져 있습니다. 일시 중단(pause) 중에 타이머를 설정하여 정확히 동일한 접두사(prefix)를 다시 전송하는 것입니다. 매번 읽을 때마다 TTL(Time To Live)이 갱신됩니다. Aider는 2024년에 이를 출시했고, Anthropic의 문서에서도 이를 권장하며, 커뮤니티 게시물들을 통해 Anthropic의 비용 메커니즘과 이론적인 4분 간격 설정까지 계산해 냈습니다. 결과적으로 이러한 민간 전승(folklore)은 정답을 알고 있었습니다. 다만 측정(measurement)이 부족했을 뿐입니다. 위에서 언급한 모든 내용은 관행과 산술적 계산입니다. 아래의 모든 내용은 측정된 결과입니다: 4개의 제공업체(provider), 2개의 접두사 크기, 최대 10분의 유휴 간격(idle gaps), 3번의 독립적인 실행, 그리고 모든 호출에 타임스탬프를 기록했습니다.
이 프로젝트가 시작된 배경에 공로를 돌리자면, Bellevue의 AgentSys 컨퍼런스 회의실에서 Haiying Shen과 Simon Peter가 코딩 에이전트를 위한 KV-cache 관리 연구인 CacheWise를 발표하는 것을 보았습니다. 그들의 트레이스 분석(trace analysis)은 서빙(serving) 측면에서 위에서 언급한 문제를 정확히 보여줍니다. 즉, 에이전트 세션은 거대한 접두사를 재사용하며, 단순한 제거(naive eviction) 방식은 이를 망가뜨린다는 것입니다. 그들의 질문은 서버가 에이전트를 위해 캐시를 어떻게 관리해야 하는가였고, 저의 질문은 클라이언트가 스스로 이를 위해 무엇을 할 수 있는가로 바뀌었습니다. Keepalive(연결 유지)는 클라이언트의 해답이며, 이 연구는 그 영감에 대한 저의 감사의 표시입니다.
제공업체는 세 가지 체제로 나뉩니다

Hard TTL (Anthropic). 기준점(baseline)은 5분까지는 따뜻한(warm) 상태를 유지하고 10분에는 소멸합니다(3회 실행 중 48개 샘플 중 0개). Keepalive는 40개 중 40개를 유지합니다. 여기서 제거(eviction)는 문서화된 그대로 절벽과 같으며, Keepalive는 비용 결정의 문제입니다. Lossy (DeepInfra를 통한 DeepSeek). 기준점은 매 간격마다 누수(leak)가 발생하며 10분이면 사라집니다(48개 중 4개). Keepalive는 거기서 42개 중 42개를 유지하지만, Keepalive 자체도 1분 시점에서 약 20%를 놓칩니다. 라우터 엔드포인트 고정(pin)은 머신 고정이 아니기 때문입니다. 핑(ping)은 한 머신을 따뜻하게 만들지만, 후속 요청은 다른 머신에 도달합니다. Sticky (OpenAI, Google). 기준점은 대부분의 경우 10분을 견뎌냅니다 (OpenAI 39/48, Google 20/24). 방어할 여지가 거의 없습니다. Keepalive는 분산(variance)을 제거하는 용도이며, 짧은 간격에서는 순전한 낭비입니다.
간격(Interval)이 핵심입니다
여기에 Keepalive의 전체 경제학이 있으며, 이는 확정된 산술입니다:
핑(Ping) 한 번은 매 간격 $\tau$마다 읽기 가격(≈입력 비용의 10%)을 소모합니다. 접두사(Prefix)를 유지하는 비용은 매 $\tau$마다 $0.1\times$가 듭니다. 재-프리필(Re-prefill) 비용은 단 한 번 100%가 발생합니다(캐시 쓰기 비용을 청구하는 Anthropic의 경우 125%). 따라서 시간당 지출은 $1/\tau$에 따라 감소하며, 간격(Interval)은 TTL(Time-to-Live) 안전성 외에는 아무것도 제공하지 않습니다. 최적의 간격은 TTL보다 안전하게 큰 가장 큰 값입니다: $\tau^* = \text{TTL} - \text{margin} \approx$ Anthropic의 5분 TTL 기준 약 4분입니다. 손익분기점(Break-even)은 유휴 시간 $\approx \tau(w/r - 1)$입니다: Anthropic 가격 기준 약 46분, OpenAI 및 DeepSeek은 36분, Google은 12분입니다(Google의 캐시된 읽기 비용은 $0.1\times$가 아닌 $0.25\times$입니다). 이 지점을 넘어서면 핑을 중단하십시오. 캐시가 만료되게 두고 재-프리필 비용을 지불하십시오.
마지막 내용은 내재화할 가치가 있는 규칙이며, 보험의 관점에서 다음과 같이 정리할 수 있습니다. 모든 핑은 단 한 번의 사고(Claim), 즉 재-프리필을 피하기 위해 지불하는 보험료입니다. Anthropic에서 보험료는 입력 가격의 $0.1\times$이고 사고 비용은 $1.25\times$이므로, 사고 비용은 보험료 12.5배의 가치가 있습니다. 4분마다 보험료를 한 번씩 지불한다면, 보험료가 사고 비용을 초과하기 전까지 12번의 보험료를 지불할 여유가 있습니다. 4분 간격으로 12번의 보험료를 지불하는 것은 46분의 일시 중단입니다. 이것이 한계선입니다.
구체적으로, 100k 토큰의 Anthropic 접두사(표시 가격 기준 입력 비용 약 $0.30)를 기준으로 살펴보겠습니다: 핑 한 번에 $0.03이 들고, 콜드 재-프리필(Cold re-prefill)에는 $0.38이 듭니다.
10분 일시 중단: 핑 두 번에 $0.06이 들며, $0.38을 아낄 수 있습니다. 캐시를 따뜻하게 유지하십시오. 결과적으로 6배 이득입니다. 46분 일시 중단: 11번의 핑에 $0.33이 들며, 이는 $0.38의 재-프리필 비용과 비슷합니다. 거의 본전입니다. 이것이 한계선입니다. 1시간 일시 중단: $0.38의 재-프리필을 피하기 위해 15번의 핑에 $0.45가 듭니다. 핑을 중단하십시오. 캐시가 식도록 내버려 두고, 다시 돌아왔을 때 재-프리필 비용을 지불하십시오.
공식에 자신의 가격과 간격을 대입하면 본인만의 한계선이 어디인지 알 수 있습니다. 핵심은 한계선이 존재하며, 사람들이 생각하는 것보다 더 가깝고, 그 선을 넘었을 때 절제된 행동은 결코 청구할 일 없는 보험 정책에 보험료를 계속 지불하지 않는 것입니다.
모두가 복제하는 '30초 규칙'은 손익분기점이 약 6분이며, 이것이 4개 제공업체 모두에서 10분 간격일 때 손해를 보는 이유입니다. 저는 4분 설정(4-minute arm)도 실행해 보았습니다. 핑(pings)은 +240.1초와 +480.1초(+0.1초 드리프트)에 발사되었고, 24개 샘플 중 23개를 웜(warm) 상태로 유지했으며, 동일한 웜 상태를 유지하면서 30초 설정보다 7.8배 적은 비용이 들었습니다. 이 관습은 신중한 것이 아닙니다. 그저 비용이 많이 들 뿐입니다.
| 600초 유휴, 100k 프리픽스 (prefix) | 종료 허용 (Let it die) | 30초 Keepalive | 240초 Keepalive |
|---|---|---|---|
| Anthropic Sonnet 4.5 | $0.667 (cold) | $0.867 (손해) | $0.414 (38% 절감) |
| ... |
마지막 열을 다시 읽어보세요: 이 간격에서 Keepalive(유지)를 통해 비용을 절감할 수 있는 유일한 제공업체는 Anthropic입니다. 이는 가격 책정의 우연이 아닙니다. Anthropic은 다음 세 가지 요소를 모두 갖춘 유일한 제공업체입니다: 엄격한 TTL (10분 후에는 확실히 제거되므로 보험이 항상 효력을 발휘함), 추가 비용이 발생하는 재-프리필 (re-prefill) (1.25배의 캐시 쓰기 프리미엄이 피할 수 있는 비용을 높임), 그리고 저렴한 0.1배 읽기 비용 (프리미엄이 낮음). 다른 제공업체들은 이 중 하나가 결여되어 있습니다: OpenAI와 Gemini는 이 간격에서 거의 제거(evict)되지 않으며 (보험할 대상이 없음), DeepSeek의 재-프리필 비용은 4센트이며 (보험할 가치가 없음), Gemini의 0.25배 읽기 비용은 프리미엄을 비싸게 만듭니다. 다만 전제 조건이 중요합니다: 이것은 측정된 하나의 지점이지 전체 곡선은 아닙니다. OpenAI의 지속적인 윈도우(sticky window)를 지나지만 손익분기점인 36분 이내인 15분 또는 20분의 일시 중단 시점에서도 Anthropic의 Keepalive는 비용을 절감할 가능성이 높습니다. 손익분기점 공식이 이를 예측하며, 저는 아직 측정하지 않았을 뿐입니다. 공식과 데이터가 일치하는 점은 각 제공업체의 비용 지불 구간이 어디서 시작하고 끝나는지, 그리고 Anthropic의 구간이 가장 넓고 확실하다는 것입니다. 또한 Anthropic은 가장 많은 에이전트 워크로드(agentic workloads)를 실행하는 제공업체이기도 하며, 긴 세션에서는 절감 효과가 복리로 작용합니다: TTL 이후의 모든 도구 호출(tool call)은 또 다른 재-프리필을 피하는 것입니다.
Keepalive를 전혀 하지 말아야 할 때
이 부분은 저를 놀라게 했으며, 기존의 통념(folklore)이 놓치고 있는 부분입니다. OpenAI: 캐시가 지속적(sticky)입니다 (아무런 조치를 취하지 않아도 10분 후 48개 샘플 중 39개가 warm 상태 유지). 따라서 Keepalive는 캐시 제거(eviction)를 방지하는 것이 아니라 변동성(variance)을 보장하는 용도입니다. 이 정도의 간격에서는 핑(ping)을 보낼 가치가 없습니다. DeepSeek: 콜드 재-프리필(cold re-prefill) 비용이 매우 저렴하여 (100k당 $0.043), 4분 간격의 Keepalive를 수행해도 비용 측면에서는 겨우 본전입니다. 이를 통해 얻는 것은 지연 시간(latency) 단축(첫 토큰까지 5.4초 → 1.4~2.0초)이므로, 이는 비용 절감이 아닌 지연 시간 최적화 전략입니다. Gemini: 이 전략에 가장 최악인 사례이며, 확인을 위해 직접 측정했습니다. 4분 간격의 Keepalive를 사용하더라도 캐시가 만료되도록 두는 것보다 비용이 40% 더 많이 듭니다 (100k 기준 $0.186 vs $0.131). 그 이유는 Gemini가 지속적인 베이스라인(보장할 것이 거의 없음)과 0.25배의 캐시 읽기 비용(비싼 보험)을 결합하고 있으며, 어피니티 레버(affinity lever, 1분의 커밋 지연이 있는 기계적 복권과 같은 히트)가 없고, 손익분기점(break-even horizon)이 12분이기 때문입니다. 처방은 보편적이지 않으며, 제공자(provider)마다 달라야 합니다.
확정된 사실과 나의 견해
확정된 사실: 위의 산술적 계산, 측정된 유지 곡선(retention curves), 측정된 7.8배의 차이, 그리고 손익분기점입니다. 이 사항들은 공개된 테스트 프레임워크(harness)의 데이터를 통해 확인할 수 있습니다.
견해: 모든 사람이 이 조언을 따를 때 어떤 일이 벌어질지에 대한 생각입니다. 캐시 계층의 제거 정책(eviction policy)은 예상 재사용률에 따라 순위가 매겨집니다. Keepalive는 최신성(recency)을 인위적으로 만들어내므로, 모든 클라이언트가 핑을 보내기 시작하면 LRU(Least Recently Used)는 더 이상 순위를 매길 대상이 남지 않게 되어 계층 전체의 성능이 모두에게 저하됩니다. 현재의 체류(residency) 비용은 토큰 시간당 보유 비용이 아닌 읽기당 비용으로 책정되어 있으므로, 각 운영자의 합리적인 임대료 지불은 다른 모든 테넌트(tenant)에게 가격이 책정되지 않은 비용을 전가합니다. 저의 예측은 이렇습니다: Keepalive의 도입은 제공자들이 체류 비용을 직접 측정하도록 강제할 것입니다. Google의 명시적인 캐시는 이미 토큰 시간당 비용을 청구하고 있으며, Anthropic의 2배 쓰기 비용이 적용되는 1시간 계층도 같은 방향으로 나아가는 단계입니다. 차익 거래(arbitrage)는 실재하며, 만료일이 존재합니다.
정책
제한적이고 재사용 가능성이 높은 일시 중단(도구 호출, 승인 대기 등) 동안에만 캐시를 유지(Keep warm)하세요. $\tau^* = \text{TTL} - \text{margin}$ 시점에 유지해야 합니다. Anthropic의 경우 약 4분, 1시간 계층(1-hour tier)의 경우 약 50분입니다. 손익분기점(break-even horizon)을 넘어서면 유지(keepalive)를 중단하세요. (Anthropic 가격 기준 약 46분). 캐시가 만료되게 두고, 필요할 때 다시 프리필(re-prefill)한 뒤 떠나세요. 사용 중인 제공업체의 체제(regime)를 파악하세요. 현재 가격과 격차를 기준으로 보면: Anthropic은 비용을 절감하고, DeepSeek은 지연 시간(latency)을 구매하는 셈이며, OpenAI와 Gemini는 아무것도 얻지 못합니다. 한 가지 솔직한 주의사항을 덧붙이자면, OpenAI의 TTL은 "5~10분"이며, 우리의 10분 격차는 그들의 유지 기간(sticky window) 안에 있었습니다. 그 범위를 벗어난 어딘가에는 유지(keepalive)가 이득이 되는 구간이 있을 수 있습니다. 다만 저희가 이를 측정하지 않았으므로 단정 지어 말하지는 않겠습니다. TTL 미만인 경우에는 캐시 유지를 건너뛰세요. 또한 캐시가 유지되는 성향(sticky)이 있거나(OpenAI, Gemini), 재프리필(re-prefill) 비용이 매우 저렴한(지연 시간을 구매하려는 경우가 아니라면 DeepSeek) 제공업체의 경우에도 마찬가지입니다. 죽은 세션을 절대 유지(keep warm)하지 마세요. pi 에이전트 하네스(harness)는 정확히 이 방식을 구현합니다: 도구 배치(tool batch)가 실행되는 동안에만 핑(ping)을 보내며, 기본값은 꺼져(off) 있습니다.
적절한 비율로, 짧게 유지하세요. 핑은 덜 보내세요.
참고 문헌
- Shubham Tiwari, Tapan Chugh, Nash Rickert, Simon Peter, Ratul Mahajan, Haiying Shen. CacheWise: Understanding Workloads and Optimizing KVCache Management for Efficiently Serving LLM Coding Agents (이 프로젝트에 영감을 준 강연).
- Maxim Khailo. Keeping the Cache Warm Pays: Keepalive Economics for Agentic Workloads (논문, PDF) 및 하네스 + 데이터 (scripts/cache-research).
- Aider AI. Change history (cache keepalive, v0.53.0, 2024).
- Anthropic. Prompt caching (pre-warming guidance).
- Veritas Supera. We Taught Our AI Agents to Take Coffee Breaks (논문상의 4분 간격).
- Brandon Wie. Anthropic Prompt Cache TTL + Cost Mechanics.
- OpenClaw. Cache keep-warm pings proposal (TTL-proportional intervals).
- Don't Break the Cache (에이전트 작업을 위해 무엇을 캐싱할 것인가, 이는 다른 문제입니다).
- Prompt cache thrashing (공유지의 비극/외부 효과).
AI 자동 생성 콘텐츠
본 콘텐츠는 Lobste.rs AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기