310 likes | 435 Views
Comparing Mark-and-Sweep and Stop-and-Copy Garbage Collection について . 2002/04/18 米澤研究室修士2年 小林義徳. 結論. Trace-driven simulation により、 Mark-and-Sweep と Stop-and-Copy を比較 CPU overhead は、 Mark-and-Sweep の方が 3-6 % 大 メモリ要求は、 Mark-and-Sweep の方が 20 % 以上少なかった
E N D
Comparing Mark-and-Sweep and Stop-and-Copy Garbage Collection について 2002/04/18 米澤研究室修士2年 小林義徳
結論 • Trace-driven simulation により、Mark-and-Sweep と Stop-and-Copy を比較 • CPU overhead は、Mark-and-Sweep の方が 3-6 % 大 • メモリ要求は、Mark-and-Sweep の方が 20 % 以上少なかった • Copy GC は、一般に言われているほど、Mark-Sweep に対し、advantage は大きくない
性能評価の指標 • CPU Costs • Allocation,sweep など、各部分にかかる時間の見積もり • Memory Costs • Page fault rate をある値以下にするのに必要なメモリ量
以下の発表の概要 • Stop-and-Copy と Mark-and-Sweep • 共通部分 • 異なる部分 • 比較した方法について • Trace-driven simulation • 実験結果について
両方の GC の共通部分 • Generational GC • オブジェクトの殿堂入りの仕方は異なる • Allocation Threshold • GC の起動のタイミングを規定 • 両方のGC が同じ回数だけ呼ばれる
Generational GC • 4 世代のGenerational GC • 各世代は、必要に応じて成長可 • Write Barrier はソフトウェアで実装 • Non-initializing pointer store の前にコードを挿入 • Remembered set は、old -> new のポインタの場所を記憶する two-level bitmap
Allocation Threshold • Allocation の量が、ある一定の量(Allocation Threshold) を越えた時点でGC起動 • Allocation Threshold は、パフォーマンスに強く影響 • Allocation Threshold が小さい場合、GC が頻繁に起こる • 本論文では、 Allocation Threshold をいろいろ変えて実験
Frequent Collection • GC の間隔が短い • Object promotion rate が増える • オブジェクトがより早くリサイクルされるので、空間的局所性が良くなる。
両方のGC で、異なる部分 • ヒープ構造、Allocation の仕方 • Generational GC の、Promotion Policy
Stop-and-Copy Collection • ヒープ構造 • 各 Generation とも、FromSpace と ToSpace • Object は、種類によらず FromSpace よりAllocate • Promotion policy • 各オブジェクトが Copy-Count を持っていて、Copy-Count が 3→ 4 になるときに古い世代にCopy (promotion)
Mark-and-Sweep GC(1) • ヒープ構造 • Mark-bitmap • Fixed Objects area • Relocatable Objects area • Vector のヘッダーは 2. に置かれ、 本体は 3.に置かれる。 • Vector への参照はすべて間接参照
Mark-and-Sweep GC(2) • en-masse promotion • 4 回 GC が起こった後、Generation 全体を promote • 結果として、promotion rate は、Stop-and-Copyの場合の約2倍になっている。
GC コストの比較の方法 • MARS (Memory Allocation and Reference Simulator, Benjamin Zorn 作) + Commercial Lisp System (Franz Allegro Common Lisp) • いくつかの Lisp プログラムを実行
MARS による simulation • Lisp MARS • Event • Object の参照 • Object の Allocation • Object Deallocation Event
Shadow Memory • MARS は、独自に “shadow memory” を管理 • MARS は、Heap 中にどうオブジェクトが配置されているかを知っている。
MARS の提供する情報 • 実行時間 • 参照の局所性 • Allocation rates • 寿命分布 • 各 GC での停止時間
CPU Costs の測定(1) • CPU Cost = 実行時間 • MARS は、instruction counter を持っていない • GC のコストについては、重要な操作の回数を数え、必要なCPU サイクル数を掛け算 • objects copied, objects marked, etc • CPU サイクル数は、Sparc のものを使用
CPU Costs の測定(2) • 全体の実行時間については、Heap 参照にかかった CPU instruction を約 8 倍して見積もる • さまざまな研究によると、多くのプログラムで、heap instruction の占める割合は約 12 % • 正確ではないが、二つのアルゴリズムの相対的な比較には十分
Memory Costs の測定 • Memory Cost = ある Page Fault 率 [faults/sec] を達成するために必要な物理メモリ量 • Page Fault 率は、Heap 参照の sequence より求めることができる。 • Data Reference のみ。Instruction reference については無視 • ページサイズ = 4096 bytes • Page replacement policy = LRU
実験結果について • 実験について • CPU Cost について • Memory Cost について
実験 • MARS + LISP で、プログラムを実行 • 商用 Lisp Compiler (ACLC) • ある種の信号処理Architecture のためのMicrocode Compiler(RL) • 他2つ(Curare, BMTP) • CPU Cost と Memory Cost を測定
CPU Cost について • Allocation Threshold 依存のもの • Mark • Write Barrier • Copying • Allocation Threshold 非依存のもの • Allocate • Sweep • Indirect (vector の間接参照)
Threshold Dependent Costs • Mark,Copy • Threshold が大きいと、GC 発生時、より多くのobject がゴミになっているので、コストが小さい • Barrier • Threshold が小さいと、object の promotion がより遅くなり、コストが小さくてすむ
Mark-Sweep v.s. Stop-Copy(1) • Threshold に依存しない costs • Copy GC • Allocation +4% • Mark-Sweep GC • Allocation +8% • Sweep +5% • Vectors +2-3% • Threshold 非依存なコストについては、Mark-Sweep の方が大きい
Mark-Sweep v.s. Stop-Copy(2) • Threshold に依存する Cost • Copy GC の方がMark-and-Sweep より大きい • Threshold が大きい場合でもそれなりの割合を占める。
CPU Cost についての結論 • Copy GC は、一般に言われているほど、Mark-Sweep に対し、advantage はない • Threshold のサイズによっては、Mark-Sweepより悪くなる。
Memory Cost について • Memory Cost = あるPage Fault 率[faults/sec] を出すのに必要なメモリ量 • 全体的に、Mark-Sweep の方が、20-40% ほど少ない。
Memory Costs の傾向 • 一般に、Threshold が大きいほど、多くのメモリを要求する • Generational な場合、逆の効果もある • Threshold が小さい場合、Promotion 率が高くなる。 • Promotion によって、空間的な局所性が悪くなる • より多くのメモリを要求する
Memory Costs の傾向 • さらに、Mark-Sweep の en-masse promotion policy では、CopyGC の場合の2倍promotion 率が高い • Threshold Size が小さい場合、Mark-Sweep がより多くのメモリを要求してしまう。
Memory Costs の傾向 • Allocation Threshold をある程度大きくした場合(500 kB ~) • Promotion rate が小さくなり、newspace への参照がメモリ使用量を dominate する。 • Mark-and-Sweep は、Heap を二つの semispace に分けないため、Memory Cost が小さい。
結論 • Trace-driven simulation により、Mark-and-Sweep と Stop-and-Copy を比較 • CPU overhead は、Mark-and-Sweep の方が 3-6 % 大 • メモリ要求は、Mark-and-Sweep の方が 20 % 以上少なかった • Copy GC は、一般に言われているほど、Mark-Sweep に対し、advantage はない