Skip to main content
QUICK REVIEW

[論文レビュー] PI : a Parallel in-memory skip list based Index

Zhongle Xie, Qingchao Cai|arXiv (Cornell University)|Jan 2, 2016
Distributed systems and fault tolerance参考文献 32被引用数 4
ひとこと要約

PIは、スキャンリストデータ構造に基づくラッチフリーで並列処理可能なメモリ内インデックスであり、マルチコアシステムにおける高いスケーラビリティを実現するように設計されている。バッチ処理されたクエリ処理、SIMD加速、NUMAに配慮したパーティショニング、ワークロード再配分を活用することで、ラッチを排除し、メモリ内データベースワークロードにおいて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命令を活用する。
  • 軽量な通信プロトコルを用いて、動的にワークロードを再配分することで、各インデックスノードが1つのスレッドでのみアクセスされるようにし、ラッチフリーな更新を実現する。
  • アクセスパターンに応じてインデックスをNUMAノードにパーティショニングすることで、リモートメモリアクセスの遅延を最小限に抑える。
  • 高レベルのインデックスノードをエントリにグループ化することで、キャッシュの局所性を向上させ、効率的なSIMD処理を可能にする。
  • プリフェッチとクエリグループ化により、メモリアクセスと計算を重ね合わせ、遅延を低減する。

実験結果

リサーチクエスチョン

  • RQ1スキャンリストベースのインデックスは、メモリ内マルチコアデータベースワークロードにおいて、MasstreeのようなB+-ツリーの変種を上回る性能を発揮できるか?
  • RQ2SIMDとNUMAに配慮したパーティショニングの使用が、並列メモリ内インデックスのパフォーマンスに与える影響は何か?
  • RQ3ワークロード再配分によるラッチフリークエリ処理が、スケーラビリティとスループットをどの程度向上できるか?
  • RQ4クエリの偏り(スケーリング)が、従来のB-ツリーインデックスと比較して、提案されたインデックスのパフォーマンスに与える影響は何か?
  • RQ5プリフェッチ、グループ化、SIMDの最適化を組み合わせた場合の、インデックススループットへのパフォーマンスへの影響は何か?

主な発見

  • PIは、YCSBワークロードのすべてにおいて、Masstreeよりも最大3倍の高いクエリスループットを達成しており、マルチコアシステムにおける優れたスケーラビリティを示している。
  • SIMD処理の活用により、ベースラインのスキャンリストと比較して、検索クエリのスループットが1.3倍向上し、挿入処理のスループットは1.0倍(変化なし)となった。
  • NUMAに配慮したパーティショニングにより、検索クエリと挿入クエリの両方で1.2倍のパフォーマンス向上が得られ、リモートメモリアクセスの低減に寄与した。
  • クエリグループ処理とプリフェッチは、それぞれ検索スループットに0.05倍と0.2倍の段階的向上をもたらした。
  • PIのパフォーマンスは、クエリの偏り(zipfianパラメータθ:0〜0.9)の変化に対しても安定しており、ワークロードの偏りに対して高い耐性を示した。
  • 範囲クエリの粒度が大きくなるに従いスループットは線形に低下するが、特にキャッシュ利用効率の高い小さなデータセットでは、Masstreeよりも顕著に高い性能を維持した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。