Skip to main content
QUICK REVIEW

[論文レビュー] BRAVO—Biased Locking for Reader-Writer Locks

David Dice, Alex Kogan|arXiv (Cornell University)|Oct 3, 2018
Parallel Computing and Optimization Techniques被引用数 1
ひとこと要約

BRAVOは、2つの整数フィールドを追加することで、既存のリーダー・ライター・ロックを軽量に拡張し、共有でNUMAフレンドリーな可視リーダー・テーブルを介して、スケーラブルなリーダー同時実行を実現する。スレッドIDをハッシュ化してテーブルに分散することで、リーダーの存在を管理し、キャッシュ整合性トラフィックを低減するとともに、ロックサイズをコンactに保ち、リード優勢のワークロードにおいても高いスケーラビリティを達成する。最小限のフットprint増加で実現される。

ABSTRACT

Designers of modern reader-writer locks confront a difficult trade-off related to scalability. Locks that have a compact memory representation for active readers will typically suffer under high intensity read-dominated workloads when the reader indicator' state is updated frequently by a diverse set of threads, causing cache invalidation and coherence traffic. Other designs, such as cohort reader-writer locks, use distributed indicators, one per NUMA node. This improves reader-reader scalability, but also increases the size of each lock instance. We propose a simple transformation BRAVO, that augments any existing reader-writer lock, adding just two integer fields to the lock instance. Readers make their presence known to writers by hashing their thread's identity with the lock address, forming an index into a visible readers table. Readers attempt to install the lock address into that element in the table, making their existence known to potential writers. All locks and threads in an address space can share the visible readers table. Updates by readers tend to be diffused over the table, resulting in a NUMA-friendly design. Crucially, readers of the same lock tend to write to different locations in the array, reducing coherence traffic. Specifically, BRAVO allows a simple compact lock to be augmented so as to provide scalable concurrent reading but with only a modest increase in footprint.

研究の動機と目的

  • リーダー状態の更新に起因するキャッシュライン無効化の頻発が原因で、高強度のリード優勢ワークロードにおいてリーダー・ライター・ロックにスケーラビリティのボトル neck が生じる問題を解決する。
  • 従来のロックにおける、コンactなメモリ表現とリーダー同士のスケーラビリティのトレードオフを克服する。
  • ロックサイズを著しく増加させることなく、並列リードにおいても効率的にスケーリングできる既存のリーダー・ライター・ロックを可能にする。
  • スレッドIDのハッシュ化を用いて、共有テーブルにリーダー存在の更新を分散させることで、整合性トラフィックを最小限に抑える。
  • シンプルかつ既存のロック実装と互換性があるソリューションを設計し、2つの追加整数フィールドのみを必要とする。

提案手法

  • 任意の既存のリーダー・ライター・ロックに、ロック固有のインデックスとリーダー数の2つの整数フィールドを追加する。
  • 各エントリがロックアドレスに対応するグローバルで共有された可視リーダー・テーブルを用意し、スレッドIDのハッシュ化によりアクティブなリーダーを追跡する。
  • 各リーダーのスレッドIDをロックのアドレスとハッシュ化して、可視リーダー・テーブル内のインデックスを計算し、更新を配列全体に分散させる。
  • リーダーが、計算されたテーブルエントリにロックアドレスをアトミックにインストールする試行を許可し、ライタに存在をシグナルする。
  • アドレス空間内のすべてのロックとスレッドが同じ可視リーダー・テーブルを共有し、最小限のオーバーヘッドでロック間の協調動作を可能にする。
  • ハッシュ化メカニズムを活用して、同じロックのリーダー間での競合とキャッシュライン共有を低減し、NUMA局所性を向上させる。

実験結果

リサーチクエスチョン

  • RQ1コンパクトなリーダー・ライター・ロックを、メモリフットprintを著しく増加させることなく、スケーラブルな同時リーディングをサポートできるように拡張できるか?
  • RQ2共有テーブルにリーダー存在の更新を分散させることで、集中型のリーダー状態管理と比較してキャッシュ整合性トラフィックが低減するか?
  • RQ3スレッドIDのハッシュ化が、リーダー・テーブルにおけるロード分散と競合低減にどの程度寄与するか?
  • RQ4BRAVOは、従来のリーダー・ライター・ロックおよびコhortベースのリーダー・ライター・ロックと比較して、高強度のリード優勢ワークロード下でどのように性能を発揮するか?
  • RQ5BRAVOは、既存のロック実装に最小限の変更で適用可能であり、後方互換性を損なわないか?

主な発見

  • BRAVOは、分散リーダー信号伝達によりキャッシュ整合性トラフィックを低減することで、既存のリーダー・ライター・ロックが高リード同時実行環境でも効率的にスケーリング可能になることを実現した。
  • スレッドIDのハッシュ化を用いることで、リーダー更新が可視リーダー・テーブル全体に分散され、競合が低減し、NUMA局所性が向上した。
  • BRAVOは、2つの追加整数フィールドのみを用いてコンパクトなロック表現を維持しており、コhortベースの設計に見られる肥大化を回避した。
  • 共有可視リーダー・テーブルにより、アドレス空間内に存在するすべてのロックとスレッドが、リーダー存在の協調動作を効率的に行えるようになり、スケーラビリティが向上した。
  • リーダー更新をテーブル全体に拡散させることで、キャッシュライン無効化の頻度が低下し、リード主体のワークロード下での全体的なシステムスループットが向上した。
  • 変換は軽量であり、既存のロック実装と互換性があり、最小限の工数で導入可能である。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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