Abstract
- Google 대규모 클라우드 인프라에서 실제 사용되는 RPC trace 분석한 최초 연구
- 사용자 지향적 Web service infra 및 관련 데이터 관리 시스템을 대상으로 10,000여개 RPC 메서드 샘플링
- RPC 지연 요소, 호출 체인 포함해서 RPC 특성과 복잡성은 예상과 다른 점이 많음
1. Introduction
- 클라우드의 key advantage는 application이 변화하는 workload에 맞춰서 동적으로 scale out 가능
- single application은 여러 통신 서비스로 분할되고 서비스 간 표준 통신 계층은 RPC
- RPC는 App 개발 단순화했고, remote 머신에서 function call이 app 내부 동작처럼 보이게하며 연결 관리, 네트워크 프로토콜, 암호화 등 복잡한 일들이 전형적으로 userspace library에서 실행되는 RPC stack에서 처리된다.
- 기존 연구는 microarchitecture 수준에서 RPC에 대한 CPU 동작에 대해 연구했는데 RPC가 시스템 전체적으로 영향을 끼칠 수 있어서 더 넓게 볼 필요 있음
- 길고 다양한 10,000 이상의 unique RPC method와 하루동안 수집한 7220억개 RPC sample군 분석
- RPC는 ms 단위의 latency와 KB 수준의 message 크기, 그리고 깊은 nested hierarchies 가지고 application processing에서 tail latency는 RPC latency tax (queue 처리, RPC 처리, network 전송)
- 8개 서비스 latency 구성 요소 분석하면서 동일 데이터센터 내 intra/inter 클러스터 latency 변동성 측정했는데, 클러스터 간 latency는 주로 네트워크 지연
- RPC 처리 시 CPU 싸이클 분포 편차 분석했고 load balancing 가능성 시사
2. Characteristics of RPCs at Hyperscale
- RPC stack과 RPC handler (invoked method)의 behavior 측정
- 지리적으로 분산된 복제 작업으로 구성되어 있고, 여러 데이터센터에 걸쳐 실행되는 병렬 task로 구성되어 높은 가용성
- 데이터는 네트워크 파일 시스템에 원격으로 저장되며, 이는 여러 데이터센터에 분산된 머신들 간에 블록을 복제해서 fault tolerance 확보
- 이런 application은 frontend → backend service → network file system 흐름 따르고, 일반적으로 compute intensive