「ロックとSTMを共存させた排他制御機構の提案」(2013年度 修士論文)

修論タイトル

「ロックとSTMを共存させた排他制御機構の提案」 (2013年度 修士論文)

氏名

村井 栄王 <murai@spa.is.uec.ac.jp>

概要

排他制御はマルチスレッドシステムの開発効率上,性能上のボトルネックとなっている.

従来はロックを使用して排他制御を行うのが主流である.この手法は書き込みが 多い状況では比較的高速な排他制御を行うことができるが,読み込みが多い状況で は比較的遅い.また,ロックの粒度が細かい場合はデッドロックの危険性があり,プ ログラマビリティが低い.

そのプログラマビリティの問題を解決するために,Touitou らが提案したのがソフトウェアトランザクショナルメモリ(Software Transactional Memory: STM)で ある.これはデータベースのトランザクションに真似て排他制御を行うものである. STM では,トランザクションは投機的に共有メモリへのアクセスを行い,データの 矛盾が発生したことに気づくと排他制御のはじめに戻る(ロールバック).STM の 実装によってはロックを使用しない.また,ロックベースSTM の実装ではデッド ロックを回避する機能が備わっているため,プログラマはデッドロックを意識する ことなくアプリケーションを開発することができ,プログラマビリティが高い.ま た,STM ではリードロックを獲得する必要がなく,コア数だけ共有メモリの読み込 みを行うことができるので,読み込みが多いなどのロールバックが起きにくい状況 ではロックより高速に動作することができる.しかし,書き込みが多い状況だと逆 にロックよりも性能が劣る.

本研究では,マルチスレッドアプリケーションにおいて,ロックとSTM を共存 させ,スレッドが状況に応じてロック,STMを切り替える排他制御機構を提案する. 本提案システムではユーザはSTM ライクにコードを記述でき,デッドロックなど のロックが持つプログラマビリティの問題を意識することはない.スレッドが情報 を収集し,ロック,STM のどちらでクリティカルセクションを実行するかを判断す る.STM で極端に性能が低下する状況でロックに切り替えることで,STM よりも 高いパフォーマンスが期待できる.

本研究では,オープンソースで提供されているSTM ライブラリに提案システム を追加する形での実装を提案した.また,静的に切り替えを行う提案システムのプ ロトタイプとロック単体,STM 単体との性能比較を行い,本提案システムの優位性 を示した.


[修論pdf]

[研究一覧へ]