1 / 31

Comparing Mark-and-Sweep and Stop-and-Copy Garbage Collection について

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 % 以上少なかった

jed
Download Presentation

Comparing Mark-and-Sweep and Stop-and-Copy Garbage Collection について

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Comparing Mark-and-Sweep and Stop-and-Copy Garbage Collection について 2002/04/18 米澤研究室修士2年 小林義徳

  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 は大きくない

  3. 性能評価の指標 • CPU Costs • Allocation,sweep など、各部分にかかる時間の見積もり • Memory Costs • Page fault rate をある値以下にするのに必要なメモリ量

  4. 以下の発表の概要 • Stop-and-Copy と Mark-and-Sweep • 共通部分 • 異なる部分 • 比較した方法について • Trace-driven simulation • 実験結果について

  5. 両方の GC の共通部分 • Generational GC • オブジェクトの殿堂入りの仕方は異なる • Allocation Threshold • GC の起動のタイミングを規定 • 両方のGC が同じ回数だけ呼ばれる

  6. Generational GC • 4 世代のGenerational GC • 各世代は、必要に応じて成長可 • Write Barrier はソフトウェアで実装 • Non-initializing pointer store の前にコードを挿入 • Remembered set は、old -> new のポインタの場所を記憶する two-level bitmap

  7. Allocation Threshold • Allocation の量が、ある一定の量(Allocation Threshold) を越えた時点でGC起動 • Allocation Threshold は、パフォーマンスに強く影響 • Allocation Threshold が小さい場合、GC が頻繁に起こる • 本論文では、 Allocation Threshold をいろいろ変えて実験

  8. Frequent Collection • GC の間隔が短い • Object promotion rate が増える • オブジェクトがより早くリサイクルされるので、空間的局所性が良くなる。

  9. 両方のGC で、異なる部分 • ヒープ構造、Allocation の仕方 • Generational GC の、Promotion Policy

  10. Stop-and-Copy Collection • ヒープ構造 • 各 Generation とも、FromSpace と ToSpace • Object は、種類によらず FromSpace よりAllocate • Promotion policy • 各オブジェクトが Copy-Count を持っていて、Copy-Count が 3→ 4 になるときに古い世代にCopy (promotion)

  11. Mark-and-Sweep GC(1) • ヒープ構造 • Mark-bitmap • Fixed Objects area • Relocatable Objects area • Vector のヘッダーは 2. に置かれ、 本体は 3.に置かれる。 • Vector への参照はすべて間接参照

  12. Mark-and-Sweep GC(2) • en-masse promotion • 4 回 GC が起こった後、Generation 全体を promote • 結果として、promotion rate は、Stop-and-Copyの場合の約2倍になっている。

  13. GC コストの比較の方法 • MARS (Memory Allocation and Reference Simulator, Benjamin Zorn 作) + Commercial Lisp System (Franz Allegro Common Lisp) • いくつかの Lisp プログラムを実行

  14. MARS による simulation • Lisp MARS • Event • Object の参照 • Object の Allocation • Object Deallocation Event

  15. Shadow Memory • MARS は、独自に “shadow memory” を管理 • MARS は、Heap 中にどうオブジェクトが配置されているかを知っている。

  16. MARS の提供する情報 • 実行時間 • 参照の局所性 • Allocation rates • 寿命分布 • 各 GC での停止時間

  17. CPU Costs の測定(1) • CPU Cost = 実行時間 • MARS は、instruction counter を持っていない • GC のコストについては、重要な操作の回数を数え、必要なCPU サイクル数を掛け算 • objects copied, objects marked, etc • CPU サイクル数は、Sparc のものを使用

  18. CPU Costs の測定(2) • 全体の実行時間については、Heap 参照にかかった CPU instruction を約 8 倍して見積もる • さまざまな研究によると、多くのプログラムで、heap instruction の占める割合は約 12 % • 正確ではないが、二つのアルゴリズムの相対的な比較には十分

  19. Memory Costs の測定 • Memory Cost = ある Page Fault 率 [faults/sec] を達成するために必要な物理メモリ量 • Page Fault 率は、Heap 参照の sequence より求めることができる。 • Data Reference のみ。Instruction reference については無視 • ページサイズ = 4096 bytes • Page replacement policy = LRU

  20. 実験結果について • 実験について • CPU Cost について • Memory Cost について

  21. 実験 • MARS + LISP で、プログラムを実行 • 商用 Lisp Compiler (ACLC) • ある種の信号処理Architecture のためのMicrocode Compiler(RL) • 他2つ(Curare, BMTP) • CPU Cost と Memory Cost を測定

  22. CPU Cost について • Allocation Threshold 依存のもの • Mark • Write Barrier • Copying • Allocation Threshold 非依存のもの • Allocate • Sweep • Indirect (vector の間接参照)

  23. Threshold Dependent Costs • Mark,Copy • Threshold が大きいと、GC 発生時、より多くのobject がゴミになっているので、コストが小さい • Barrier • Threshold が小さいと、object の promotion がより遅くなり、コストが小さくてすむ

  24. 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 の方が大きい

  25. Mark-Sweep v.s. Stop-Copy(2) • Threshold に依存する Cost • Copy GC の方がMark-and-Sweep より大きい • Threshold が大きい場合でもそれなりの割合を占める。

  26. CPU Cost についての結論 • Copy GC は、一般に言われているほど、Mark-Sweep に対し、advantage はない • Threshold のサイズによっては、Mark-Sweepより悪くなる。

  27. Memory Cost について • Memory Cost = あるPage Fault 率[faults/sec] を出すのに必要なメモリ量 • 全体的に、Mark-Sweep の方が、20-40% ほど少ない。

  28. Memory Costs の傾向 • 一般に、Threshold が大きいほど、多くのメモリを要求する • Generational な場合、逆の効果もある • Threshold が小さい場合、Promotion 率が高くなる。 • Promotion によって、空間的な局所性が悪くなる • より多くのメモリを要求する

  29. Memory Costs の傾向 • さらに、Mark-Sweep の en-masse promotion policy では、CopyGC の場合の2倍promotion 率が高い • Threshold Size が小さい場合、Mark-Sweep がより多くのメモリを要求してしまう。

  30. Memory Costs の傾向 • Allocation Threshold をある程度大きくした場合(500 kB ~) • Promotion rate が小さくなり、newspace への参照がメモリ使用量を dominate する。 • Mark-and-Sweep は、Heap を二つの semispace に分けないため、Memory Cost が小さい。

  31. 結論 • 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 はない

More Related