(17) KLIC 第3版:KLICへの世代方式ガーベジコレクタの導入
研究テーマ、研究代表者:
(1)研究テーマ
KLIC 第3版: KLIC への世代方式ガーベジコレクタの導入に関する研究
(2)研究代表者(氏名、所属、役職)
近山 隆
東京大学 工学系研究科 電子情報工学専攻、教授
報告項目
(1) 研究の目的
-
平成7年度の委託研究「KLICの実行時システムの改良・拡張」の成果
の一部である、世代方式のガーベジコレクションの方式について、実
装および評価が未完であったが、これを完成させ KLIC システムの一
部として公開可能にする。
具体的には IFS として公開中の KLIC 3.002 版
および付属文書に対して、必要な修正を加えることになる。
(2) 研究の進捗状況
-
まず、KLIC 処理系に手を加え、擬似的にヒープオブジェクトの
世代管理を行い、KLIC 処理系にヒープ領域に世代管理を導入する
ことが、どの程度プログラム実行速度に影響を及ぼすかの予測、検討
を行った。
また、同時にプログラム実行時におけるヒープ上のオブジェクト
の寿命を測定し、KLIC 処理系に適した世代管理方式を検討した。
さらに、単純なケースにおける世代方式 GC の仮実装を行った。
(3) 現在までの主な成果
-
まず、KLIC 処理系に世代方式 GC を導入すると、
GC の手間の削減とワーキングセットを小さくすることによる
キャッシュヒット率の向上とにより最大20%程度の速度向上が
見込めるということが明らかになった。
また、中断再開を頻繁に繰り返すようなプログラムでは
世代方式 GC に向かないデータ構造が多く存在することを示し、
それらに対しては異なった管理方式を導入することの有効性を検討した。
さらに、単純なデータ構造に対して世代管理を
行う GC を導入した KLIC 処理系を試作した。
(4) 成果ソフトウェアイメージ
-
KLIC 第3版に世代管理を行う GC を導入する。
現在の KLIC 処理系は、比較的短期間だけ必要とするようなさまざまな
制御用のデータ構造なども、プログラム中から明示的に利用する通常
のデータと同じヒープ領域に割付ける設計となっている。これは処理
系の構造を単純にする効果をあげている反面、 GC 機構にかける負担が
大きい。
そこで、さまざまなデータ構造を割付けるヒープ領域を、比較的長時間
保持されているデータを格納する領域 (旧世代領域) と、最近割付けた
データを格納する領域 (新世代領域) に分割する。
このような世代管理を行う GC を導入することによって、まず GC の
実行自体のオーバヘッドが減る。
また、短期間にガーベジになる新世代領域の GC を頻度高く行えば、
ワーキングセットを小さくする効果を生じ、キャッシュミスヒットや
ページフォールトの頻度を低減することができる。
以上の結果、 KLIC のユーザにとっては同一のプログラムがより高速に
実行されることになる。
www-admin@icot.or.jp