comparing mark-and-sweep and stop-and-copy garbage collection について

31
Comparing Mark-and-Swe ep and Stop-and-Copy G arbage Collection にににに 2002/04/18 ににににににに にににに

Upload: jed

Post on 22-Jan-2016

37 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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

Comparing Mark-and-Sweep and Stop-and-Copy Garbage Collecti

on について

2002/04/18

米澤研究室修士2年小林義徳

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

結論• Trace-driven simulation により、 Mark-and-S

weep と Stop-and-Copy を比較– CPU overhead は、 Mark-and-Sweep の方が 3-6

% 大– メモリ要求は、 Mark-and-Sweep の方が 20 %

以上少なかった

• Copy GC は、一般に言われているほど、Mark-Sweep に対し、 advantage は大きくない

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

性能評価の指標

• CPU Costs– Allocation,sweep など、各部分にかかる時

間の見積もり

• Memory Costs– Page fault rate をある値以下にするのに必

要なメモリ量

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

以下の発表の概要

• Stop-and-Copy と Mark-and-Sweep– 共通部分– 異なる部分

• 比較した方法について– Trace-driven simulation

• 実験結果について

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

両方の GC の共通部分

• Generational GC– オブジェクトの殿堂入りの仕方は異なる

• Allocation Threshold– GC の起動のタイミングを規定– 両方の GC が同じ回数だけ呼ばれる

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

Generational GC

• 4 世代の Generational GC

• 各世代は、必要に応じて成長可• Write Barrier はソフトウェアで実装

– Non-initializing pointer store の前にコードを挿入

• Remembered set は、 old -> new のポインタの場所を記憶する two-level bitmap

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

Allocation Threshold

• Allocation の量が、ある一定の量 (Allocation Threshold) を越えた時点で GC 起動

• Allocation Threshold は、パフォーマンスに強く影響– Allocation Threshold が小さい場合、 GC が

頻繁に起こる– 本論文では、 Allocation Threshold をい

ろいろ変えて実験

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

Frequent Collection

• GC の間隔が短い• Object promotion rate が増える• オブジェクトがより早くリサイクルされ

るので、空間的局所性が良くなる。

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

両方の GC で、異なる部分

• ヒープ構造、 Allocation の仕方• Generational GC の、 Promotion Policy

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

Stop-and-Copy Collection

• ヒープ構造– 各 Generation とも、 FromSpace と ToSpace– Object は、種類によらず FromSpace より A

llocate

• Promotion policy– 各オブジェクトが Copy-Count を持ってい

て、 Copy-Count が 3→ 4 になるときに古い世代に Copy (promotion)

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

Mark-and-Sweep GC(1)

• ヒープ構造1. Mark-bitmap

2. Fixed Objects area

3. Relocatable Objects area

• Vector のヘッダーは 2. に置かれ、 本体は 3. に置かれる。

– Vector への参照はすべて間接参照

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

Mark-and-Sweep GC(2)

• en-masse promotion– 4 回 GC が起こった後、 Generation 全体

を promote– 結果として、 promotion rate は、 Stop-and-

Copy の場合の約2倍になっている。

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

GC コストの比較の方法

• MARS

(Memory Allocation and Reference Simulator, Benjamin Zorn 作 )

+ Commercial Lisp System (Franz Allegro Common Lisp)

いくつかの Lisp プログラムを実行

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

MARS による simulation

• Lisp MARS

• Event – Object の参照– Object の Allocation– Object Deallocation

Event

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

Shadow Memory

• MARS は、独自に “ shadow memory” を管理

• MARS は、 Heap 中にどうオブジェクトが配置されているかを知っている。

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

MARS の提供する情報

• 実行時間• 参照の局所性• Allocation rates

• 寿命分布• 各 GC での停止時間

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

CPU Costs の測定 (1)

• CPU Cost = 実行時間• MARS は、 instruction counter を持っていな

• GC のコストについては、重要な操作の回数を数え、必要な CPU サイクル数を掛け算– objects copied, objects marked, etc– CPU サイクル数は、 Sparc のものを使用

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

CPU Costs の測定 (2)

• 全体の実行時間については、 Heap 参照にかかった CPU instruction を約 8 倍して見積もる– さまざまな研究によると、多くのプログ

ラムで、 heap instruction の占める割合は約 12 %

– 正確ではないが、二つのアルゴリズムの相対的な比較には十分

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

Memory Costs の測定

• Memory Cost = ある Page Fault 率 [faults/sec] を達成するために必要な物理メモリ量

• Page Fault 率は、 Heap 参照の sequence より求めることができる。– Data Reference のみ。 Instruction reference に

ついては無視• ページサイズ = 4096 bytes• Page replacement policy = LRU

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

実験結果について

• 実験について• CPU Cost について• Memory Cost について

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

実験

• MARS + LISP で、プログラムを実行– 商用 Lisp Compiler (ACLC)– ある種の信号処理 Architecture のための Mi

crocode Compiler(RL)– 他2つ (Curare, BMTP)

• CPU Cost と Memory Cost を測定

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

CPU Cost について

• Allocation Threshold 依存のもの– Mark– Write Barrier– Copying

• Allocation Threshold 非依存のもの– Allocate– Sweep– Indirect (vector の間接参照 )

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

Threshold Dependent Costs

• Mark,Copy– Threshold が大きいと、 GC 発生時、より多

くの object がゴミになっているので、コストが小さい

• Barrier– Threshold が小さいと、 object の promotion

がより遅くなり、コストが小さくてすむ

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

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

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

Mark-Sweep v.s. Stop-Copy(2)

• Threshold に依存する Cost– Copy GC の方が Mark-and-Sweep より大き

い– Threshold が大きい場合でもそれなりの割

合を占める。

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

CPU Cost についての結論

• Copy GC は、一般に言われているほど、Mark-Sweep に対し、 advantage はない

• Threshold のサイズによっては、 Mark-Sweep より悪くなる。

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

Memory Cost について

• Memory Cost = ある Page Fault 率 [faults/sec] を出すのに必要なメモリ量

• 全体的に、 Mark-Sweep の方が、 20-40% ほど少ない。

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

Memory Costs の傾向

• 一般に、 Threshold が大きいほど、多くのメモリを要求する

• Generational な場合、逆の効果もある1. Threshold が小さい場合、 Promotion 率

が高くなる。2. Promotion によって、空間的な局所性が

悪くなる3. より多くのメモリを要求する

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

Memory Costs の傾向

• さらに、 Mark-Sweep の en-masse promotion policy では、 CopyGC の場合の2倍promotion 率が高い

• Threshold Size が小さい場合、 Mark-Sweep がより多くのメモリを要求してしまう。

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

Memory Costs の傾向

• Allocation Threshold をある程度大きくした場合 (500 kB ~ )– Promotion rate が小さくなり、 newspace へ

の参照がメモリ使用量を dominate する。– Mark-and-Sweep は、 Heap を二つの semisp

ace に分けないため、 Memory Cost が小さい。

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

結論

• Trace-driven simulation により、 Mark-and-Sweep と Stop-and-Copy を比較– CPU overhead は、 Mark-and-Sweep の方が

3-6 % 大– メモリ要求は、 Mark-and-Sweep の方が 2

0 % 以上少なかった

• Copy GC は、一般に言われているほど、Mark-Sweep に対し、 advantage はない