with Java I worked in a big company. ✓ This work was similar to assembly line work.. I made a part of a product. I didn't understand whole product. ✓ ✓ 13/207
current work Currently, I work at NaCl. ✓ matz and shyouhei and takaokouji are my co-workers. ✓ shugo is my boss. They are CRuby committers. ✓ ✓ 17/207
Collection for me GC technology is very interesting for me. ✓ GC is a garbage collecting machine. ✓ I've been creating it since then. It's very fun!! ✓ 21/207
Traditional M&S GC executes mark and sweep atomically. Ruby application stops during GC (stop-the-world). ✓ ✓ In Lazy sweeping, sweeping is lazy. ✓ 37/207
is a dead object? A dead object is an object that is never referenced by the program. ✓ In GC terms, we say a that dead object is unreachable from Roots. ✓ 52/207
not perform sweeping in parallel The sweeping is much faster than the marking. You can see ko1's research ✓ <URL:http://www.atdot.net/~ko1/ diary/201011.html#d4> ✓ ✓ 73/207
means.. Tasks are distributed to multiple threads. ✓ The task of marking the entire heap is divided into several tasks, each marking a single branch. ✓ 84/207
law is used to find the maximum expected improvement to an overall system when only part of the system is improved. [cited from `Amdahl's law - Wikipedia'] 102/207
conclusion so far We should consider how we can efficiently balance workloads. So, we use Task Stealing. ✓ ✓ We should eliminate non-parallel parts by using wait-free algorithm. ✓ ✓ 109/207
what ways could shift() cause contention problems? e.g... shift() and pop() could be called at the same time when deque has only one element. ✓ ✓ 123/207
Marker uses Arora's Deque as a marking stack. ✓ A "task" means an object. The granularity of the task is very fine. ✓ ✓ This is a naive implementation. ✓ 140/207
point & Bad point Number of calls to Deque's operations was reduced. Marking speed of the worker is improved. ✓ ✓ However, Coarse-grained tasks decrease parallelism. ✓ 155/207
for large Array objects and Hash objects Each marker has a special deque to manage them. ✓ A marker divides them into fixed size tasks. e.g. 0-9 elements of Array, 10-19 elements of Array... ✓ ✓ 162/207
The naive implementation was slow. Grain of the task was too fine. ✓ ✓ A "task" means a branch in Roots Grain of the task is coarse. ✓ ✓ It's faster!! ✓ 164/207
benchmark program is make rdoc make rdoc generates the Ruby documentation. ✓ This benchmark measures execution time and the GC execution time of make rdoc. ✓ ✓ 173/207
case for Parallel GC If the objects are many. In this case, mark targets is also many. ✓ ✓ If the objects are long-lived. Server-side application? ✓ ✓ 179/207
characteristics of SUPER NARIO GC GC is running in fixed intervals. ✓ A lot of objects are generated to increase GC's burden. Burden = Game Level ✓ ✓ 187/207
to compare Original GC and Parallel GC Original GC pause time is long. This game will be difficult. ✓ ✓ Parallel GC pause time is short. This game will be easy. ✓ ✓ 188/207
OS is not supported Mark Worker uses pthread as native thread. ✓ And, uses some gcc built-in functions. ✓ But, I'll support for Windows eventually. ✓ 198/207