研究概要 |
本研究では,細粒度タスク群を共有メモリ型計算機の上で実行する際に,軽量プロセスの再利用を行ないスケジューリングを効率よく行なう方式の一つであるアクティビティ方式スケジューラを対象に,プロセッサ数やタスク数が多くタスク管理用のキューへのアクセスがネックとなる状況の改善法について検討した.ユーザからのタスク生成要求をプロセッサ毎に分散させたキューに保存し,大部分のスケジュール処理がプロセッサ毎に独立した情報のみで行なえる構成を提案し実現した.その処理系について処理速度や使用メモリ量の観点から評価を行ない性能の向上を確認した.ローカル・キューではLIFO順序でタスク・キュー管理を行ない,他プロセッサ上の情報にアクセスしてプロセッサ間で負荷を再分配する際はFIFO順序でタスクを取得する方式を用いることで効率良い分配ができることが判明した. また,メモリ遅延の大きな状況を想定し,マルチ・スレッド型のプロセッサを用いた構成についても研究を行った.メモリ遅延時間の許容にはスレッド数を大きく設定することが望ましいが,スレッド数が多過ぎるとプロセッサ内の複数のスレッドが限られたキャッシュ容量を奪い合うためヒット率を高くできない.プロセッサとキャッシュのモデル解析より,これら二要因により特定のスレッド数でプロセッサ稼働率がピークとなることを示した.さらに,プログラムの性質(並列度やヒット率)の変化に対応すべく実行可能スレッド数などの情報を収集する機能をプロセッサに付加し,動作スレッド数を変化させ常に適切なスレッド数を維持する方式を提案した.アクティビティ・スケジューラを基本として,個々の細粒度タスク終了を契機にして問題自身の制御構造を乱すことなく動作しているスレッド数を増減させる処理系を実現し,応用プログラムを走らせプロセッサ稼働率の向上を確認した.
|