修論タイトル:共有キャッシュメモリを有効活用するスレッドスケジューリング機構

氏名:藤田竜一

概要:

 現代のCPUは消費電力あたりの性能の問題からクロックの上昇による1コアあたりの性能向上が鈍化しており,CPU1パッケージ内に搭載するコアの数を増やすマルチコアCPUによって性能の向上を続けている.このようなマルチコアCPUの持つ計算能力を活かすためプログラムの並列処理の重要度が増加し,1つのプロセスのメモリ空間を共有しながらも独立した実行の単位を持つ「スレッド」を複数作成するマルチスレッドプログラムが一般的に用いられている.
 一方で,CPUの性能向上に対してメインメモリの性能向上が追い付かず,メインメモリにアクセスしてデータを読み書きする時間がCPUにとって長大な待ち時間となりCPUの利用効率が悪化してしまう.そこで近代のCPUでは小容量ながら高速にアクセスできるキャッシュメモリを設置し,頻繁にアクセスする一部のデータについてはキャッシュメモリ上で高速に読み書きすることでメインメモリへのアクセス速度の遅さを隠ぺいしている.
 複数あるプロセス・スレッドの中からどれを実際にCPUに乗せて実行するかを決定することをスケジューリングと呼び,これを実行しているのがOSのプロセス・スレッドスケジューラである.現在のLinuxやFreeBSDといったOSは.スケジューリングする際は原則的にプロセスに割り振られたタイムスライスの消費状況のみを指標として使用している.この実装ではキャッシュミスの多発によるプログラムの実行速度の低下といった状況を検出することができず.実行効率が悪くなる場合もある.
 そこで,本研究ではユーザモードからカーネルのスケジューリングに介入できるようにし,任意の指標をスケジューリングに反映させる手法を提案,実装した.そして,本システムを利用した共有キャッシュメモリのキャッシュミス値を考慮したスケジューリング手法について提案した.また,提案システムを応用し,あるプロセスの実行中のキャッシュメモリの状況の推移を可視化することができ,本提案システムが正常に動作していることを示した.

[修論pdf][研究室内部向け情報]