Skip to main content
QUICK REVIEW

[논문 리뷰] Size-aware Sharding For Improving Tail Latencies in In-memory Key-value Stores

Diego Didona, Willy Zwaenepoel|arXiv (Cornell University)|2018. 02. 02.
Cloud Computing and Resource Management참고 문헌 41인용 수 26
한 줄 요약

이 논문은 메모리 내 키-값 스토어에서 크기 인식 분할을 제안하여, 작은 요청과 큰 요청을 별도의 코어에 고립시켜 선두 대기 블로킹을 방지함으로써 꼬리 지연(latency)을 줄입니다. Minos는 실제로 구현된 시스템으로, 소형 항목에 대해 하드웨어 기반 디스패치를 사용하고 코어 할당을 동적으로 조정하여, 최상위 시스템 대비 동일한 99번째 백분위수 지연 시간에서 최대 7.4배 높은 처리량을 달성합니다.

ABSTRACT

This paper introduces the concept of size-aware sharding to improve tail latencies for in-memory key-value stores, and describes its implementation in the Minos key-value store. Tail latencies are crucial in distributed applications with high fan-out ratios, because overall response time is determined by the slowest response. Size-aware sharding distributes requests for keys to cores according to the size of the item associated with the key. In particular, requests for small and large items are sent to disjoint subsets of cores. Size-aware sharding improves tail latencies by avoiding head-of-line blocking, in which a request for a small item gets queued behind a request for a large item. Alternative size-unaware approaches to sharding, such as keyhash-based sharding, request dispatching and stealing do not avoid head-of-line blocking, and therefore exhibit worse tail latencies. The challenge in implementing size-aware sharding is to maintain high throughput by avoiding the cost of software dispatching and by achieving load balancing between different cores. Minos uses hardware dispatch for all requests for small items, which form the very large majority of all requests. It achieves load balancing by adapting the number of cores handling requests for small and large items to their relative presence in the workload. We compare Minos to three state-of-the-art designs of in-memory KV stores. Compared to its closest competitor, Minos achieves a 99th percentile latency that is up to two orders of magnitude lower. Put differently, for a given value for the 99th percentile latency equal to 10 times the mean service time, Minos achieves a throughput that is up to 7.4 times higher.

연구 동기 및 목표

  • 변동하는 항목 크기로 인해 발생하는 선두 대기 블로킹으로 인한 메모리 내 키-값 스토어의 높은 꼬리 지연(latency) 문제를 해결합니다.
  • 특수 하드웨어를 요구하지 않고, 다중 코어 시스템과 다중 큐 NIC를 활용한 일반적인 하드웨어에서 꼬리 지연(latency)을 향상시킵니다.
  • 소형 요청이 대용량 요청에 의해 지연되는 것을 방지하기 위해 소형 및 대용량 요청을 분리하는 분할 전략을 설계합니다.
  • 소프트웨어 디스패치 오버헤드를 최소화하고 소형 및 대용량 요청 처리자 간의 동적 로드 밸런싱을 가능하게 하여 높은 처리량과 낮은 지연 시간을 달성합니다.

제안 방법

  • 소형 및 대용량 요청을 별도의 코어 세트에 할당하여 크기 인식 분할을 구현함으로써, 소형 항목에 대한 선두 대기 블로킹을 완전히 제거합니다.
  • 소형 요청을 직접 대상 코어에 디스패치할 수 있도록 하드웨어 기반 요청 큐잉을 사용하여 대부분의 요청에 대한 소프트웨어 디스패치를 회피합니다.
  • 경량 제어 루프를 사용하여 런타임에 소형 및 대용량 항목 간의 크기 임계값을 동적으로 결정합니다.
  • 작업 특성에 따라 소형 및 대용량 요청 처리에 할당된 코어 수를 조정하여 로드 밸런싱을 유지합니다.
  • 기존의 다중 큐 NIC 하드웨어를 활용하여 소형 요청을 특정 코어로 직접 하드웨어 수준에서 디스패치할 수 있도록 합니다.
  • 클라이언트 프로토콜이나 데이터 레이아웃의 변경 없이도 기존의 메모리 내 키-값 스토어 아키텍처와 통합됩니다.

실험 결과

연구 질문

  • RQ1변동하는 항목 크기로 인한 메모리 내 키-값 스토어에서 소형 및 대용량 요청을 별도의 코어에 고립시키는 것이 꼬리 지연(latency)을 크게 줄일 수 있는가?
  • RQ2높은 소프트웨어 디스패치 오버헤드 없이 크기 인식 분할을 효율적으로 구현할 수 있는가?
  • RQ3소형 및 대용량 요청 워크로드 간의 크기 임계값과 코어 할당을 위한 최적의 런타임 전략은 무엇인가?
  • RQ4꼬리 지연(latency)과 처리량 측면에서 전통적인 분할 기법(예: 키해시 기반 분할 또는 워크 스틸링)에 비해 크기 인식 분할이 얼마나 뛰어나게 성능을 냅니다?

주요 결과

  • Minos는 가장 가까운 경쟁자 대비 99번째 백분위수 지연 시간을 최대 100배까지 감소시켜 마이크로초 이하의 꼬리 지연(latency)을 달성합니다.
  • 목표 99번째 백분위수 지연 시간이 평균 서비스 시간의 10배일 경우, Minos는 다음으로 좋은 시스템 대비 최대 7.4배 높은 처리량을 달성합니다.
  • 소형 요청에 대한 하드웨어 디스패치 사용으로 소프트웨어 디스패치 병목 현상이 제거되어 최소한의 지연 오버헤드로 높은 처리량을 달성할 수 있습니다.
  • 작업 비율에 기반한 동적 코어 할당 전략은 다양한 워크로드에서도 로드 밸런싱을 유지하여 자원 낭비나 과부하를 방지합니다.
  • 작업 스틸링 및 키해시 기반 분할보다 크기 인식 분할이 소형 요청에 대한 선두 대기 블로킹을 완전히 제거함으로써 뛰어난 성능을 발휘합니다.
  • 이 접근법은 특수 가속기나 RDMA 지원이 없는 일반 하드웨어에서도 효과적으로 작동하며, 다중 큐 NIC만 필요로 합니다.

더 나은 연구,지금 바로 시작하세요

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.