Skip to main content
QUICK REVIEW

[논문 리뷰] PI : a Parallel in-memory skip list based Index

Zhongle Xie, Qingchao Cai|arXiv (Cornell University)|2016. 01. 02.
Distributed systems and fault tolerance참고 문헌 32인용 수 4
한 줄 요약

PI는 멀티코어 시스템에서 높은 확장성을 확보하기 위해 스킵 리스트 데이터 구조를 기반으로 한 락 없는 병렬 메모리 인덱스이다. 락을 제거하기 위해 배치 쿼리 처리, SIMD 가속, NUMA 인식 파artitioning, 워크로드 재분배 기법을 사용하여, 메모리 기반 데이터베이스 워크로드에서 Masstree보다 최대 3배 높은 쿼리 처리량을 달성한다.

ABSTRACT

Due to the coarse granularity of data accesses and the heavy use of latches, indices in the B-tree family are not efficient for in-memory databases, especially in the context of today's multi-core architecture. In this paper, we present PI, a Parallel in-memory skip list based Index that lends itself naturally to the parallel and concurrent environment, particularly with non-uniform memory access. In PI, incoming queries are collected, and disjointly distributed among multiple threads for processing to avoid the use of latches. For each query, PI traverses the index in a Breadth-First-Search (BFS) manner to find the list node with the matching key, exploiting SIMD processing to speed up the search process. In order for query processing to be latch-free, PI employs a light-weight communication protocol that enables threads to re-distribute the query workload among themselves such that each list node that will be modified as a result of query processing will be accessed by exactly one thread. We conducted extensive experiments, and the results show that PI can be up to three times as fast as the Masstree, a state-of-the-art B-tree based index.

연구 동기 및 목표

  • 粗분할된 액세스와 락 경쟁으로 인해 메모리 기반 다중코어 데이터베이스에서 B+-트리 인덱스의 낮은 확장성 문제를 해결하기 위해.
  • 병렬적이고 많은 코어를 가진 환경에서 B-트리보다 더 높은 확장성을 보이는 스킵 리스트를 메모리 인덱싱의 대안으로 탐색하기 위해.
  • SIMD 및 워크로드 재분배를 활용해 효율적인 포인트 및 범위 쿼리를 지원하는 고성능, 락 없는 인덱스를 설계하기 위해.
  • NUMA 아키텍처와 캐시 국소성을 최적화하여 메모리 액세스 지연을 줄이고 처리량을 향상시키기 위해.

제안 방법

  • 쿼리를 배치로 묶어 락 경쟁을 방지하기 위해 여러 스레드에서 병렬로 처리한다.
  • 각 쿼리를 너비 우선 순서로 탐색하면서 SIMD 명령어를 사용해 키 비교를 가속화하고 메모리 액세스 오버헤드를 줄인다.
  • 가벼운 통신 프로토콜을 통해 워크로드를 동적으로 재분배하여 각 인덱스 노드가 오직 한 스레드에서만 액세스하도록 보장함으로써 락 없는 업데이트를 가능하게 한다.
  • 접근 패턴에 기반해 인덱스를 NUMA 노드에 파artitioning하여 원격 메모리 액세스 지연을 최소화한다.
  • 고수준의 인덱스 노드를 엔트리 단위로 묶어 캐시 국소성을 향상시키고 효율적인 SIMD 처리를 가능하게 한다.
  • 프리패칭과 쿼리 그룹화를 통해 메모리 액세스를 계산과 겹쳐 지연을 추가로 줄인다.

실험 결과

연구 질문

  • RQ1스킵 리스트 기반 인덱스가 메모리 기반 다중코어 데이터베이스 워크로드에서 Masstree와 같은 B+-트리 변종보다 성능이 뛰어나게 될 수 있는가?
  • RQ2SIMD와 NUMA 인식 파artitioning의 사용이 병렬 메모리 인덱스 성능에 어떤 영향을 미치는가?
  • RQ3워크로드 재분배를 통한 락 없는 쿼리 처리가 확장성과 처리량 향상에 얼마나 기여하는가?
  • RQ4쿼리 치우침이 기존 B-트리 인덱스와 비교해 제안된 인덱스의 성능에 어떤 영향을 미치는가?
  • RQ5프리패칭, 그룹화, SIMD 등의 최적화 기법을 결합했을 때 인덱스 처리량에 어떤 영향을 미치는가?

주요 결과

  • PI는 YCSB 워크로드 전반에서 Masstree 대비 최대 3배 높은 쿼리 처리량을 달성하여 다중코어 시스템에서 뛰어난 확장성을 입증했다.
  • SIMD 처리를 사용함으로써 기준 스킵 리스트 대비 검색 쿼리 처리량은 1.3배 향상되고 삽입 처리량은 1.0배 향상되었다.
  • NUMA 인식 파artitioning는 원격 메모리 액세스를 최소화함으로써 검색 및 삽입 쿼리 모두에서 1.2배의 성능 향상을 기여했다.
  • 쿼리 그룹화와 프리패칭은 각각 검색 처리량에서 0.05배, 0.2배의 점진적 향상을 제공했다.
  • PI의 성능는 다양한 쿼리 치우침(지파안 파라미터 θ: 0에서 0.9)에서도 안정적으로 유지되어 워크로드 치우침에 대한 강건성을 보였다.
  • 범위 쿼리의 정밀도가 증가함에 따라 처리량은 선형적으로 저하되지만, 특히 캐시 활용도가 높은 작은 데이터셋에서는 Masstree보다 크게 높은 성능 유지를 보였다.

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

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

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

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