comparing mark-and-sweep and stop-and-copy garbage collection について
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 PresentationTRANSCRIPT
Comparing Mark-and-Sweep and Stop-and-Copy Garbage Collecti
on について
2002/04/18
米澤研究室修士2年小林義徳
結論• 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 は大きくない
性能評価の指標
• 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 より A
llocate
• Promotion policy– 各オブジェクトが Copy-Count を持ってい
て、 Copy-Count が 3→ 4 になるときに古い世代に Copy (promotion)
Mark-and-Sweep GC(1)
• ヒープ構造1. Mark-bitmap
2. Fixed Objects area
3. 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 のための Mi
crocode 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 な場合、逆の効果もある1. Threshold が小さい場合、 Promotion 率
が高くなる。2. Promotion によって、空間的な局所性が
悪くなる3. より多くのメモリを要求する
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 を二つの semisp
ace に分けないため、 Memory Cost が小さい。
結論
• 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 はない