実験用リアルタイムガベージコレクタ実装の進捗状況

Download Report

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)