[論文レビュー] A new and five older Concurrent Memory Reclamation Schemes in Comparison (Stamp-it)
本稿では、従来の手法とは異なり、すべてのスレッドをスキャンして再利用可能かどうかを判定するのを避ける、ロックフリーで均等化定数時間のメモリ再利用スキーム「Stamp-it」を紹介する。512スレッドまでをカバーする4つのアーキテクチャで評価した結果、ハンズオンポイント、エポックベース再利用、リファレンスカウンティングを含む5つの既存手法を凌駆する、再利用効率および実行時間において優れた性能を発揮した。特に高並列環境下で顕著な優位性を示した。
Memory management is a critical component in almost all shared-memory, concurrent data structures and algorithms, consisting in the efficient allocation and the subsequent reclamation of shared memory resources. This paper contributes a new, lock-free, amortized constant-time memory reclamation scheme called \emph{Stamp-it}, and compares it to five well-known, selectively efficient schemes from the literature, namely Lock-free Reference Counting, Hazard Pointers, Quiescent State-based Reclamation, Epoch-based Reclamation, and New Epoch-based Reclamation. An extensive, experimental evaluation with both new and commonly used benchmarks is provided, on four different shared-memory systems with hardware supported thread counts ranging from 48 to 512, showing Stamp-it to be competitive with and in many cases and aspects outperforming other schemes.
研究の動機と目的
- すべてのスレッドをスキャンして再利用可能なノードを特定する必要があることによる、並列メモリ再利用における性能ボトルネックを解消すること。
- C++および現代のハードウェアと互換性がある一般用途向け、非侵襲的でポータブルかつ標準準拠のメモリ再利用スキームを設計すること。
- さまざまなワークロードとアーキテクチャで、5つの代表的な手法を対象にStamp-itのスケーラビリティおよび効率性を評価し、優位性を確立すること。
- 特に多くのスレッドが存在する高並列環境下で、メモリ圧力を低減し、再利用遅延を改善すること。
- 再現性および実世界での利用を可能にするために、すべての手法の生産環境対応でオープンソースの実装を提供すること。
提案手法
- すべてのスレッドをスキャンせずに、ノードの再利用可能性を特定できるように、スレッドの活動状態を追跡するグローバルな「ステンプ」値を用いる、新しい再利用メカニズム「Stamp-it」を導入する。
- スレッドごとのローカルなリタイアリストとグローバルなリタイアリストを採用し、グローバルステンプが「参照がない」と示す場合にのみ再利用を開始する。
- ロックフリーな進行とスレッドセーフティを保証するため、ハードウェア支援のアトミック命令(CAS、FAA)を用い、非標準命令を避ける。
- 再利用処理中にグローバルステンプが変更された場合に備え、再起動機構を実装する。これにより、レースコンディションを回避できる。
- ノード参照を追跡するスレッドローカルデータ構造を設計し、必要最小限に抑えることで、競合を最小限に抑える。
- ロビンソン[29]が提唱した標準的なC++インターフェースを採用することで、異なるデータ構造との間でポータビリティと非侵襲的設計を確保する。
実験結果
リサーチクエスチョン
- RQ1すべてのスレッドをスキャンせずに、ノードあたり均等化定数時間の再利用を達成できるメモリ再利用スキームは存在するか?
- RQ2高並列環境下で、ハンズオンポイントやエポックベース再利用といった既存手法と比較して、Stamp-itの再利用効率および実行時間はどのように異なるか?
- RQ3スレッド数(最大512)が、さまざまなアーキテクチャ上で再利用性能およびメモリ圧力に与える影響は何か?
- RQ4他の手法と比較して、Stamp-itは「最後のスレッド」問題(残りのリタイア済みノードを再利用できるスレッドが存在しなくなる問題)をどのように扱っているか?
- RQ5一般用途向けでリファレンスカウンティングでない再利用スキームは、メモリオーバーヘッドを回避しながらも、リファレンスカウンティングの性能を上回るか、同等の性能を達成できるか?
主な発見
- Stamp-itは、リファレンスカウンティングを除くすべての他の手法とは異なり、すべてのスレッドをスキャンせずにノードあたり均等化定数時間の再利用を達成した。
- Sparc上のHashMapベンチマークにおいて、Stamp-itとLFRCは試行回数が増えるにつれて実行時間が減少した一方、HP、ER、NER、QSRは収集されないメモリ圧力の影響で実行時間が増加した。
- すべてのアーキテクチャにおいて、Stamp-itはHP、ER、NER、QSRを上回る再利用効率を示し、時間の経過とともに著しく少ない未再利用ノード数を維持した。
- HP、ER、NER、QSRの未再利用ノード数は、継続的に増加し、すべてのスレッドが終了した後もゼロに下がらないことが示され、持続的なメモリ圧力が生じていることがわかった。
- Stamp-itは、軽量なステンプベースの再起動機構を用いることで、「最後のスレッド」レースコンディションを軽減し、メモリリークを低減し、最終的な再利用を改善した。
- 48〜512のハードウェアスレッドを有するシステムでは、性能およびメモリ効率の両面で、Stamp-itはすべての他の手法を常に上回るか同等の性能を発揮した。特にスレッド数が多い環境下で顕著な優位性を示した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。