paxli.blogg.se

Riptide pro v2.6
Riptide pro v2.6









Incremental collectors avoid some synchronization overhead, but concurrent collectors scale better. Since then, a huge variety of incremental and concurrent techniques have been explored. Later algorithms like Baker’s were incremental: they assumed that there was one CPU, and sometimes the application would call into the collector but only for bounded increments of work. This involves gnarly race conditions that Steele solved with a bunch of locks. The originally proposed solution for janky GC pauses, by Guy Steele in 1975, was to have one CPU run the app and another CPU run the collector. This is a well-understood computer science problem. The problem with this approach is that the GC pause can be long enough to cause rendering loops to miss frames, or in some cases it can even take so long as to manifest as a spin. Traditional collectors scan the entire heap periodically, and this is roughly how WebKit’s collector has worked since the beginning. In the worst case, for the collector to free a single object, it needs to scan the entire heap to ensure that no objects have any references to the one it wants to free. This post concludes with performance data. The field of incremental and concurrent GC goes back a long time and WebKit is not the first system to use it, so this post has a section about how Riptide fits into the related work. Then it describes the Riptide algorithm in detail, including the mature WebKit GC foundation, on which it is built. This post begins with a brief background about concurrent GC (garbage collection). We hope that Riptide will help to reduce the severity of GC pauses for many different kinds of applications. Riptide also improves our Octane performance.

riptide pro v2.6

Riptide improves WebKit’s performance on the JetStream/splay-latency test by 5x, which leads to a 5% improvement on JetStream. This can make a big difference for responsiveness since garbage collection can easily take 10 ms or more, even on fast hardware. Riptide reduces worst-case pause times by allowing the app to run concurrently to the collector. As of r209827, 64-bit ARM and x86 WebKit ports use a new garbage collector called Riptide.











Riptide pro v2.6