Skip to main content
QUICK REVIEW

[論文レビュー] Don't Persist All : Efficient Persistent Data Structures

Pratyush Mahapatra, Mark D. Hill|arXiv (Cornell University)|May 29, 2019
Parallel Computing and Optimization Techniques参考文献 8被引用数 9
ひとこと要約

本稿では、永続メモリにおけるデータ構造に対して部分的永続的アプローチを提案する。この手法では、リンクリストの'next'ポインタなど、必須のデータフィールドのみを永続化し、'prev'ポインタのような冗長フィールドはクラッシュ後に再構築する。フラッシュ回数を削減することで、フラッシュ中心のワークロードにおいて最大165%の性能向上を達成し、全永続化と比較して平均15%の向上を実現した。

ABSTRACT

Data structures used in software development have inbuilt redundancy to improve software reliability and to speed up performance. Examples include a Doubly Linked List which allows a faster deletion due to the presence of the previous pointer. With the introduction of Persistent Memory, storing the redundant data fields into persistent memory adds a significant write overhead, and reduces performance. In this work, we focus on three data structures - Doubly Linked List, B+Tree and Hashmap, and showcase alternate partly persistent implementations where we only store a limited set of data fields to persistent memory. After a crash/restart, we use the persistent data fields to recreate the data structures along with the redundant data fields. We compare our implementation with the base implementation and show that we achieve speedups around 5-20% for some data structures, and up to 165% for a flush-dominated data structure.

研究の動機と目的

  • 永続メモリシステムにおける頻繁なキャッシュフラッシュによって引き起こされる性能オーバーヘッドを低減すること。
  • 全冗長フィールドを永続化するのではなく、必須のデータフィールドのみを永続化することで、永続データ構造における性能向上が可能かどうかを調査すること。
  • システム再起動後にバーチャルメモリで冗長フィールドを再構築する効率的なアルゴリズムを設計すること。
  • 二重リンクリスト、B+ツリー、ハッシュマップのような一般的なデータ構造における選択的永続化の性能への影響を評価すること。
  • 永続書き込みを最小限に抑えることで、正しさや信頼性を損なわずにアプリケーションの性能を顕著に向上させられることを実証すること。

提案手法

  • リンクリストの'next'ポインタのような、必須のデータフィールドのみを非揮発性メモリに永続化するが、'prev'のような冗長フィールドは永続化しない。
  • クラッシュ後に、永続化されたフィールドのみを用いて、データ構造の完全な再構築をバーチャルメモリ上で実行し、データ構造の構造的不変性を活用する。
  • 再構築プロセスは性能最適化が施されており、データ構造の複雑さに応じて所要時間が変動する(例:1.2 GBのリンクリストで2秒、同程度のハッシュマップで7秒)。
  • 二段階設計を採用し、操作はバーチャルメモリで行われ、必要に応じてのみ永続メモリにフラッシュされるため、永続書き込みの回数を最小限に抑える。
  • メモリフェンスとキャッシュフラッシュを、必須のデータフィールドにのみ選択的に適用することで、全体のフラッシュオーバーヘッドを低減する。
  • 正しさの検証として、フラッシュが永続メモリ領域にのみ向けられることを保証するチェックと、注入された障害後の回復を検証する仕組みを備える。

実験結果

リサーチクエスチョン

  • RQ1データ構造における永続化対象のフィールド数を減らすことで、永続メモリシステムにおける性能向上を明確に得られるか?
  • RQ2フラッシュ中心のワークロード下で、選択的永続化がリンクリスト、B+ツリー、ハッシュマップのような一般的なデータ構造の性能に与える影響は?
  • RQ3クラッシュ後にバーチャルメモリで冗長データフィールドを再構築する際のオーバーヘッドはどれくらいで、その性能低下を許容できるほどに抑えることができるか?
  • RQ4データアラインメントは、同じキャッシュラインを再利用する場合に、永続メモリアクセスにおけるフラッシュ操作の性能にどのように影響を与えるか?
  • RQ5データの一貫性や正しさを損なわず、フラッシュ回数を最小限に抑えることで、どれほど性能向上を達成できるか?

主な発見

  • 部分的永続的アプローチは、単純な全永続化実装と比較して平均15%の性能向上を達成した。
  • フラッシュ中心のワークロードでは、必要なフラッシュ回数を大幅に削減したため、最大165%の性能向上を達成した。
  • 1.2 GBのハッシュマップの再構築に7秒、同程度のサイズのリンクリストでは2秒を要した。再構築時間はデータ構造に依存することが示された。
  • アラインされていないデータのフラッシュは、64バイトアラインのフラッシュと比較して61.3%の性能低下を引き起こし、キャッシュラインアラインの重要性が顕著に示された。
  • 障害注入実験においても正しさが維持された。フラッシュ前に注入したバグは、再構築メカニズムにより正常に回復した。
  • 特に高頻度の書き込みとフラッシュを伴うワークロードでは、永続書き込みを減らすことで性能向上が顕著に現れた。

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

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

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

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