[논문 리뷰] Blade: A Data Center Garbage Collector
Blade는 가비지 컬렉션(GC) 일시정지 상태를 예측 가능한 장애로 간주하여, 장애 복구 메커니즘을 통해 분산 시스템에서 GC를 조율하는 API이다. 이는 HTTP 로드 밸런서나 레프트 일致성 알고리즘과 같은 시스템에서 GC로 인한 꼬리 지연(latency)을 제거하며, 영향을 단일 네트워크 라운드트립(48 μs)으로 제한하고, GC가 전혀 없는 경우와 동일한 성능을 달성한다.
An increasing number of high-performance distributed systems are written in garbage collected languages. This removes a large class of harmful bugs from these systems. However, it also introduces high tail-latency do to garbage collection pause times. We address this problem through a new technique of garbage collection avoidance which we call Blade. Blade is an API between the collector and application developer that allows developers to leverage existing failure recovery mechanisms in distributed systems to coordinate collection and bound the latency impact. We describe Blade and implement it for the Go programming language. We also investigate two different systems that utilize Blade, a HTTP load-balancer and the Raft consensus algorithm. For the load-balancer, we eliminate any latency introduced by the garbage collector, for Raft, we bound the latency impact to a single network round-trip, (48 μs in our setup). In both cases, latency at the tail using Blade is up to three orders of magnitude better.
연구 동기 및 목표
- 많은 현대 분산 시스템은 메모리 버그를 방지하는 가비지 컬렉션 언어인 Go와 자바와 같은 언어로 구축되며, 이는 GC 일시정지 시간으로 인해 예측 불가능하고 높은 꼬리 지연(latency)을 유발한다.
- 기존의 GC 최적화는 평균 성능에 초점이 맞춰져 있으며, 현대 데이터센터 워크로드에서 마이크로초 수준의 보장을 요구하는 데서 중요한 꼬리 지연을 해결하지 못한다.
- 응용 프로그램 수준의 GC 튜닝은 어렵고 워크로드에 따라 달라지며, GC를 비활성화하거나 수동 메모리 관리로 전환하면 안전성과 생산성이 희생된다.
- 본 논문은 응용 프로그램 개발자가 GC 시점 조정을 제어할 수 있도록, 시스템 수준의 장애 복구 메커니즘과 통합하여 GC 일시정지를 마스킹하고자 한다.
- 목표는 기존 GC 런타임을 수정하지 않고도 실제 시스템에서 GC 관련 꼬리 지연을 제거하거나 제한하는 데 있다.
제안 방법
- Blade는 응용 프로그램이 가비지 컬렉션 시작 전에 콜백을 등록할 수 있도록 단순한 API를 노출한다. 이를 통해 장애 복구 메커니즘과의 조율가능성을 확보한다.
- API를 통해 응용 프로그램은 네트워크 라운드트립 이후나 알려진 유휴 기간 동안 GC를 연기할 수 있다.
- 이 방법은 GC 일시정지를 통제된 장애의 형태로 간주하며, 기존의 요청 복제나 리더 선거와 같은 시스템 복원력 패턴을 활용해 영향을 숨긴다.
- 이 접근법은 Go 런타임에 통합되어 있어, 언어나 GC 실행 환경을 변경하지 않고도 개발자가 GC 조율 기능을 선택적으로 활성화할 수 있다.
- 응용 프로그램 수준의 조율을 통해 노드 간의 GC 겹침을 방지함으로써 종단 간 지연 영향을 최소화한다.
- HTTP 로드 밸런서와 레프트 일치성 알고리즘 두 가지 사례 연구를 통해 Blade의 실세계 시스템에서의 효과를 입증한다.
실험 결과
연구 질문
- RQ1가비지 컬렉션 일시정지 상태를 GC 최적화가 아닌 응용 프로그램 수준의 조율을 통해 분산 시스템에서 제거하거나 제한할 수 있는가?
- RQ2기존 분산 시스템의 장애 복구 메커니즘을 수정하지 않고도 GC 일시정지 영향을 마스킹하기 위해 재사용할 수 있는가?
- RQ3Blade는 기본 GC와 GC를 완전히 비활성화한 경우에 비해 종단 간 꼬리 지연 측면에서 어떻게 비교되는가?
- RQ4Blade는 실제 워크로드에서 GC가 전혀 없는 시스템과 동일한 성능을 달성할 수 있는가?
- RQ5Blade를 사용해 다수의 노드에서 GC를 조율할 경우 성능 오버헤드 또는 지연 영향은 어떠한가?
주요 결과
- HTTP 로드 밸런서 사례에서 Blade는 GC 관련 꼬리 지연을 완전히 제거하여, GC가 전혀 없는 시스템과 구별할 수 없을 정도의 성능을 달성했다.
- 레프트 일치성 알고리즘의 경우, Blade는 GC 영향을 단일 네트워크 라운드트립으로 제한하였으며, 실험 환경에서 48 μs로 측정되었다.
- Blade를 사용한 종단 간 지연은 GC가 전혀 없는 시스템의 최적 성능과 일치하여, GC 영향을 완전히 마스킹할 수 있음을 입증했다.
- 기본 Go 가비지 컬렉터 대비 꼬리 지연 측면에서 최대 3개 주기(1000배) 향상된 성능을 달성했다.
- Blade는 낮은 지연 요구 사양을 충족하는 고처리량, 단순한 GC 설계를 가능하게 하며, 지연 완화를 응용 프로그램 수준의 조율로 이관함으로써 복잡한 저지연 컬렉터가 필요로 하는 것을 방지한다.
- 이 방법은 일반화 가능하며 GC 런타임을 수정할 필요가 없어, 유사한 API를 제공하는 다른 가비지 컬렉션 언어에도 적용 가능하다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.