Transcript 実験用リアルタイムガベージコレクタ実装の進捗状況
実験用リアルタイムガベージ コレクタ実装の進捗状況
JAIST 権藤克彦,八十島利典
もくろみ
kaffe-1.0.1-rt の GC を – まだです(ごめんなさい) incremental に GCの挙動を制御する API を実装する 適当なリアルタイムアプリケーションで実験 する (実験用ではない)リアルタイム 計・実装する GC を設
現状(1)
write-barrier – vm_protect で書き込み禁止にしておき,例外 を拾って,GCの作業用グラフを調整 – vm_map で,GCからは常に書き込み可 – Mach だと faulting address がとれてグー – オーバーヘッドは大きい (180us) – 本来は ちに JIT コンパイラやインタプリタのあちこ write-barrier を埋め込むべき(大変)
write-barrier
の概要 addr1 を書込禁止 (vm_protect) *addr1=addr2 EXC_BAD_ACCESS TF をセット addr1 を書込許可 *addr1=addr2 EXC_BREAKPOINT GCグラフ修正 addr1 を書込禁止
0x123 通常スレッド空間 (書き込み禁止あり) vm_map 0x80000123 GCスレッド空間 (常に書き込み可)
現状(2)
排他制御 – GC作業用グラフが一貫するように klock/kunlock で排他制御 – 「一貫」の定義のめどはついた(まだ甘い) – 実は concurrent GC な実現 初期化と終了化(スタックのスナップショット) – もっともロック時間が長くなる部分 – 実現しているがチューニングはまだ
GC API(1)
従来:「非機能的要件はプログラマが気に するべきではない」 最近:「非機能的要件は高度に抽象化して プログラマに制御させよう」 – 例: realtime scheduling, processor reservation – GCには(たぶん)ない → GC API
GC API(2)
メモリ予約,GCパラメタの変更,アルゴリ ズムの切り替え,起動・停止の制御など automatic dynamic rebudgeting まで実 験できると嬉しい
議論したいこと
RT-Mach+JVM(kaffe-rt)+smaf-GC は オーバヘッドが大きいと予想 – 組み込み,ハードリアルタイム との兼ね合い – pthread を使うだけで GC 屋は馬鹿にする – ソフトリアルタイムの実験用としてはまあよい 何をアプリケーションとするか?どんな入 力列を仮定するのか? – GCの性能に大きく影響 GC APIへの要求
紹介
八十島利典(やそしまとしのり)君 JAIST 権藤研M2 GC屋として修行中 – GC visualizer 作成予定
メモ
JTron(Java on ITRON) Real-Time Java Working Group (NIST)