150 likes | 267 Views
高速で実時間性を持つ GC の設計と実装. 2004.10.5 電子情報工学科 4 年 近山・田浦研究室 30384 白井達也. 発表の流れ. 背景 本研究の目的 基本的な GC アルゴリズム 関連研究 本研究の GC モデルによる性能予測 現状と今後の予定. メモリの自動管理の必要性. 背景. メモリ管理の明示は煩雑 Garbage Collection ( GC) メモリの解放を自動的に行う プログラマは解放のタイミングを明示する必要が無くなり、負担が軽減する GC のコスト 効率 ⇒総実行時間 停止時間 ⇒対話プログラムの反応時間.
E N D
高速で実時間性を持つGCの設計と実装 2004.10.5 電子情報工学科4年 近山・田浦研究室 30384 白井達也
発表の流れ • 背景 • 本研究の目的 • 基本的なGCアルゴリズム • 関連研究 • 本研究のGC • モデルによる性能予測 • 現状と今後の予定
メモリの自動管理の必要性 背景 • メモリ管理の明示は煩雑 • Garbage Collection(GC) • メモリの解放を自動的に行う • プログラマは解放のタイミングを明示する必要が無くなり、負担が軽減する • GCのコスト • 効率 ⇒総実行時間 • 停止時間 ⇒対話プログラムの反応時間
本研究の目的 • 効率と停止時間 • まとめて処理すると、効率はよいが、停止時間が長い • 処理を分けると、停止時間は短いが、効率は悪い 効率と停止時間はトレードオフの関係 • 本研究の目的 一度に停止する最大時間を抑えた上で効率の高いGCを設計、実装する
Reference Count GC(RC) • 手法 • オブジェクトから参照されている数(参照数)を数える • ポインタが更新されたら参照数も更新し、0になったら解放する • 長所 • 停止時間が短い • 効率が オブジェクトの 生存率によらない • 短所 • ポインタ更新ごとの 処理が大きい • 循環参照を解放できない local or global variables root root 1 A 2 D 1 B 2 0 1 E F C
Mark-Sweep GC(MS) • 手法 • rootからたどれたオブジェクトをmarkする • ヒープをsweepしてmarkされていないオブジェクトを解放 • 長所 • 循環参照のごみを 解放できる • 短所 • 停止時間が長い • オブジェクト生存率が 高いと効率が悪くなる local or global variables root root T A T D F B F T F C E F
Incremental Mark-Sweep GC(IMS) • 手法 • ヒープ使用率が(k-1)/kを超えたらmarkフェーズに入る • ユーザプログラムがメモリをallocateするたびに、k個のオブジェクトだけmarkを行う • 長所 • 停止時間が短い • 短所 • 生存率が高いと 効率が悪くなる • ポインタ更新ごとの処理 など、MSより効率が悪い Heap 使用量 (k-1)/k markした量 allocate clock IMS開始 IMS終了 1サイクル
関連研究 • RCとIMSのハイブリッドGC [J. DeTreville 1990] • 循環参照のごみを解放することを目的としたGC • 効率は考慮されていない • Ulterior Reference Counting [S. M. Blackburn et al. 2003] • 停止時間を抑え、効率の向上を目指したGC • Generational GCで、若い世代はCopying GCを、古い世代はRCを用いている。循環参照のごみの解放にはBaconらによるCycle detectionを用いる • プログラムによっては停止時間が長くなる
本研究の貢献 • 以下の要件を満たすGCを提案する 1.循環参照のごみも解放する 2.停止時間が短い 3.生存率の上昇による、効率の低下を抑 える • その上で、できるだけ効率を向上させることを考える
基本方針 • RCとIMSを用いる • 停止時間が短い • 生存率が高くても、効率の低下が少ない • 循環参照構造を解放する • IMSの調整 • 1 allocateごとのIMSの mark量を調整し、サイクル数を減らすことで、効率を向上させる
RCによる解放中 IMS終了 IMS開始 RCとIMSの調整(1) ヒープが足りなくなる前に、しかし、できるだけ遅くにIMSのmarkが終わるように設定する 1.RCによる解放は 1 allocateにつき 1 objectまで 2.IMSのmark は 1 allocateにつき k objectずつ(kは停止時間の設定による) 3.IMSはヒープ使用率が(k-1)/kになったらmark を開始する 4.RCの解放中はIMSのmarkを行わない heap size 使用量 heap×(k-1)/k IMS終了時の使用量 mark後にごみなったオブジェクト 生存量 markした量 allocate clock 1サイクル
RCとIMSの調整(2) R markフェーズ中の 「ヒープの空き領域 R」 と 「未markオブジェクトの最大量T」 の関係は常に ヒープが足りなくなる前に IMSのmarkが終わる T
モデルを用いた性能予測 • 仮定 • 生存率とサイクル終了時の 使用率が一定 • 本研究のGCがIMSよりも効率がよくなる条件 ra :サイクル終了時のヒープ使用率 r :RCによる1オブジェクトの解放コスト m :1オブジェクトのmarkコスト s :1オブジェクトのsweepコスト k :1allocateあたりのmark量 (r,m,sは実装によって決まる) • 使用率が高いときは • 本研究のGCのほうが有利 !!
実装 • Jikes RVMを用いる • オープンソースのJava VM • メモリ管理はモジュール(JMTk [S. M. Blackburn et al. 2003])に 分かれている • すでに実装されているGC • Mark-Sweep GC • Copying GC • Reference Count GC • Generational GC (hybrid) • 本研究ではRCを元に実装する
現状と今後の予定 • 現状 • GCの設計が決まった • 今後の予定 • GCモデルの改良 IMSを調整しないGCモデルを作り、IMSを調整することによる性能向上の予測を立てる • 実装 Jikes RVMに本研究のGCを実装する • 評価 生存率の異なるプログラムを用いて、停止時間を確認し、総実行時間を測定する • ヒープ使用率の低い時の対応 ヒープ使用率が低い時はRCの処理を止めることで、IMSと同じ性能にできる