Skip to main content
QUICK REVIEW

[論文レビュー] Lock-Free and Practical Deques using Single-Word Compare-And-Swap

Håkan Sundell, Philippas Tsigas|ArXiv.org|Aug 5, 2004
Distributed systems and fault tolerance参考文献 19被引用数 11
ひとこと要約

本論文では、現代のシステムで広く利用可能な単語単位の比較アトムスイップ(CAS)操作のみを用いて、ロックフリーで非重複並列アクセスが可能なデュープ実装を提示する。この実装は、高並列処理および非一様メモリアクセス(NUMA)環境下でも高い性能を発揮する。従来のロックフリー・デュープは非ポータブルな2語分の比較アトムスイップ(CAS2)に依存するか、競合を引き起こすが、本アルゴリズムは線形化可能性とメモリ安全を維持しながら、高並列処理におけるNUMAシステムでCAS2ベースの代替手法を上回る性能を発揮する。

ABSTRACT

We present an efficient and practical lock-free implementation of a concurrent deque that is disjoint-parallel accessible and uses atomic primitives which are available in modern computer systems. Previously known lock-free algorithms of deques are either based on non-available atomic synchronization primitives, only implement a subset of the functionality, or are not designed for disjoint accesses. Our algorithm is based on a doubly linked list, and only requires single-word compare-and-swap atomic primitives, even for dynamic memory sizes. We have performed an empirical study using full implementations of the most efficient algorithms of lock-free deques known. For systems with low concurrency, the algorithm by Michael shows the best performance. However, as our algorithm is designed for disjoint accesses, it performs significantly better on systems with high concurrency and non-uniform memory architecture.

研究の動機と目的

  • 現代のハードウェアで利用可能な標準的なアトミックプリミティブのみを用いて、実用的でロックフリーであり、非重複並列アクセスが可能なデュープの不足を解消すること。
  • 機能制限(例:両端での同時プッシュ/ポップが不可)があるか、非ポータブルなCAS2操作に依存する従来のロックフリー・デュープの制限を克服すること。
  • 標準的なCAS操作とロックフリーなメモリ管理方式を用いて、動的サイズの最大値をサポートするデュープを設計すること。
  • 高負荷や並列アクセス下でも線形化可能性とメモリ安全を保証し、正しさを確保すること。
  • 既存のロックフリー実装と比較して、高並列処理およびNUMAアーキテクチャを備えたシステムで優れた性能を示すことを実証すること。

提案手法

  • ノードレベルのアトミック操作を用いた、双方向リンクリスト構造に基づくデュープ実装を行う。
  • すべての同期処理に単語単位の比較アトムスイップ(CAS)を用い、非ポータブルなCAS2操作を避ける。
  • PushLeft、PushRight、PopLeft、PopRightなどの操作を、反対側の端での操作との干渉を最小限に抑えるように設計し、非重複並列アクセスを実現する。
  • ブロッキングを伴わない動的メモリ割り当ておよび解放を可能にする、ロックフリーなメモリ管理方式を統合する。
  • 線形化ポイントと不変条件を定義し、線形化可能性の証明を適用することで、並列実行下での正しさを保証する。
  • すべてのアトミックプリミティブをアセンブリ言語で実装し、パフォーマンス評価のために高最適化コンパイルを用いる。

実験結果

リサーチクエスチョン

  • RQ1標準的な単語単位のCAS操作のみを用いて、完全な機能と動的メモリサイズをサポートするロックフリー・デュープを実装可能か?
  • RQ2非重複並列アクセス設計は、競合を引き起こしやすい従来のロックフリーアルゴリズムと比較して、高並列処理および非一様メモリアーキテクチャ(NUMA)環境下で性能向上をもたらすか?
  • RQ3CAS2をソフトウェアでエミュレートする場合、CASベースの実装と比較してパフォーマンスにどのような差が出るか?
  • RQ4ロックフリー・デュープは、両端での並列操作をブロッキングなしでサポートしながら、線形化可能性とメモリ安全を維持できるか?
  • RQ5提案されたアルゴリズムは、メモリ階層が異なる多様なマルチプロセッサプラットフォームにおいて実用的かつスケーラブルか?

主な発見

  • 提案されたCASベースのデュープは、すべてのテストプラットフォームでCAS2ベースの実装を上回り、特に高並列処理およびNUMA環境下で顕著な性能向上を示した。
  • 非一様メモリアクセスを有する29プロセッサのSGI Origin 2000システムでは、2スレッドから本アルゴリズムがMichaelのCASベース実装を顕著に上回った。これは、非重複並列アクセス設計のおかげである。
  • 低~中程度の並列処理および一様メモリアーキテクチャ環境ではMichaelのアルゴリズムが最良の性能を示すが、高負荷およびNUMAワークロード下では本アルゴリズムがそれを上回った。
  • ソフトウェアでエミュレートされたCAS2操作(相互排他やHarrisらのCASNを用いて)は、ネイティブCASに比べてパフォーマンスが劣ることを確認した。これは、単語単位のCASのみを用いる利点を裏付けた。
  • 形式的補題と不変条件を用いた証明により、線形化可能性とメモリ安全を維持していることが示され、あらゆる並列アクセスパターン下でも正しさが保証された。
  • 実装は実用的であり、NOBLEライブラリに統合された。これは、並列システムにおける実世界応用可能性を示している。

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

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

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

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