実験用リアルタイムガベージ コレクタ実装の進捗状況 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)
© Copyright 2024 ExpyDoc