Skip to main content
QUICK REVIEW

[論文レビュー] Delay-Free Concurrency on Faulty Persistent Memory

Naama Ben-David, Guy E. Blelloch|arXiv (Cornell University)|Jun 12, 2018
Distributed systems and fault tolerance参考文献 28被引用数 4
ひとこと要約

本論文では、読み取り、書き込み、CAS操作を用いる任意の並行プログラムを、定数の計算遅延および回復遅延を有する永続的で障害に強いバージョンに変換する一般化されたシミュレータを提示する。キャプセルベースのチェックポイント機構と、ローカル変数の使用およびメモリバリアに対する最適化を用いることで、手動で最適化された永続的データ構造と同等の高いパフォーマンスを実現するとともに、クラッシュ後も正しく動作することを保証する。

ABSTRACT

Non-volatile memory (NVM) promises persistent main memory that remains correct despite loss of power. This has sparked a line of research into algorithms that can recover from a system crash. Since caches are expected to remain volatile, concurrent data structures and algorithms must be redesigned to guarantee that they are left in a consistent state after a system crash, and that the execution can be continued upon recovery. However, the prospect of redesigning every concurrent data structure or algorithm before it can be used in NVM architectures is daunting. In this paper, we present a construction that takes any concurrent program with reads, writes and CASs to shared memory and makes it persistent, i.e., can be continued after one or more processes fault and have to restart. Importantly the converted algorithm has constant computational delay (preserves instruction counts on each process within a constant factor), as well as constant recovery delay (a process can recover from a fault in a constant number of instructions). We show this first for a simple transformation, and then present optimizations to make it more practical, allowing for a tradeoff for better constant factors in computational delay, for sometimes increased recovery delay. We also provide an optimized transformation that works for any normalized lock-free data structure, thus allowing more efficient constructions for a large class of concurrent algorithms. We experimentally evaluate our transformations by applying them to a queue.

研究の動機と目的

  • 非揮発性メモリ(NVM)アーキテクチャにおいて、システムのクラッシュ後に耐久性があり回復可能な並行プログラムを実現する課題に取り組む。
  • 永続的トランザクショナルメモリやユニバーサル構成といった既存のアプローチに見られる高いオーバーヘッドや一般性の欠如といった制限を克服する。
  • パフォーマンスを保持しつつ、アルゴリズム固有の再設計を必要とせずに、高速な回復を可能にする一般用途の変換を提供する。
  • 既存の並行アルゴリズムを、最小限のプログラマーの作業で自動的かつ再利用可能な形で永続メモリに移植可能にする。
  • 設定可能なキャプセル境界とコードレベルの最適化を通じて、計算遅延と回復遅延のトレードオフを最適化し、実用的なパフォーマンスを実現する。

提案手法

  • 定期的にプロセッサの状態を非揮発性メモリに保存することで、障害からの回復を可能にするキャプセルベースのチェックポイント機構を用いる。
  • 計算遅延および回復遅延が、プログラムサイズに依存せず定数要因で制限される「定数遅延シミュレータ」を実装する。
  • 計算オーバーヘッドを低減するためにキャプセルサイズを増加させる「低計算遅延シミュレータ」を導入するが、回復時間はわずかに増加する。
  • 不要なローカル変数の削除、不要なメモリフェンスの削除、キャッシュラインの書き込み順序の活用といった最適化を適用し、フラッシュ回数を削減してパフォーマンスを向上させる。
  • ロックフリーデータ構造の構造的性質を活用することで、より効率的な変換を可能にする「永続正規化シミュレータ」を設計する。
  • アティアらの回復可能なCASプリミティブを統合し、アトミック操作の正しいかつ効率的な回復を保証する。

実験結果

リサーチクエスチョン

  • RQ1読み取り、書き込み、CAS操作を含む任意の並行プログラムを、定数の遅延を伴う永続的かつクラッシュ回復可能なバージョンに変換できる一般化されたシミュレータを構築できるか?
  • RQ2永続的シミュレーションフレームワークにおいて、計算オーバーヘッドと回復時間のトレードオフをどのように最適化できるか?
  • RQ3ローカル変数の削減やフェンスの削除といったコードレベルの最適化によって、どれほどパフォーマンスを向上させられるか?
  • RQ4自動変換された永続的データ構造のパフォーマンスは、手動で最適化されたものやトランザクショナルメモリベースの代替手法と比べてどの程度優れているか?
  • RQ5キューのような実際の並行データ構造に、本シミュレータを効果的に適用できるか? また、競合状態が激しくても、競争力のあるパフォーマンスと低い回復コストを維持できるか?

主な発見

  • 定数遅延シミュレータは、計算遅延および回復遅延の両方が定数であることを保証し、障害状態下でも予測可能なパフォーマンスを実現する。
  • 低計算遅延シミュレータは、より大きなキャプセルを使用することで計算オーバーヘッドを低減し、一般キューでは1.28倍、正規化キューでは1.57倍の性能向上を達成した(非最適化バージョンと比較)。
  • 不要なローカル変数の削除や、CAS操作の直後に不要なフェンスを削除する最適化により、フラッシュ回数が著しく削減され、スループットが向上した。
  • キューの正規化最適化版(Normalized-Opt)は、最大5スレッドまでRomulusLRを上回り、1スレッドではLogQueueと同等またはそれを上回るパフォーマンスを示し、スループットは1.42倍向上した。
  • 提案されたシステムにおける回復処理は効率的であり、最後のキャプセルを読み込み、回復可能なCASを回復するだけで実現され、回復時間はスレッド数に比例して線形に増加する。
  • 実験結果から、一般性と高速回復のコストは、非永続キューのベースラインと比較して最小限に抑えられており、高負荷の競合状態下でもスループットの低下は顕著でないことが示された。

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

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

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

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