Adding stock gc trigger and set it as default#222
Conversation
|
julia-version |
| if alloc_mem != 0 && alloc_time != 0 && gc_mem != 0 && gc_time != 0 { | ||
| let alloc_rate = alloc_mem as f64 / alloc_time as f64; | ||
| let gc_rate = gc_mem as f64 / gc_time as f64; | ||
| target_allocs = (heap_size as f64 * alloc_rate / gc_rate).sqrt() * TUNING_FACTOR; |
There was a problem hiding this comment.
The computation looks like mem balancer. If this is Julia's current heuristics, I assume Julia is using a variant of mem balancer (e.g. the thrashing detection).
There was a problem hiding this comment.
That's right. I think it does, and that's what I wanted to say in the MMTk meeting.
However, looking at TUNING_FACTOR from Julia, it looks much different than what mmtk-core implements? But again, the equation they use seems different...
There was a problem hiding this comment.
We did not 'tune' for mmtk's mem balancer. They multiply with the TUNING_FACTOR, we divide by the TUNING_FACTOR. But set this aside, it looks like that they are using a variant of mem balancer.
There was a problem hiding this comment.
Yes, our heuristics started with stock membalancer and then we changed the quite a bit, notably by allowing it to scale a lot faster when small
… heap collections)
8bfb290 to
c5af30d
Compare
|
FYI, here is some rough data (in seconds) about time spent doing some of the steps for building Julia and running Not sure why there's a huge discrepancy in the |
This PR sets MMTk to use the stock GC heuristics for heap resizing by default. It also updates the `mmtk-julia` version to incorporate the changes that support the new gc triggering heuristics (see mmtk/mmtk-julia#222).
This PR implements Julia's Stock GC heuristics for triggering GC and resizing the heap. It also updates
mmtk-coreto the latest version.