Support generational ZGC
Hi, here is a enhance for Generational ZGC , towards https://github.com/microsoft/gctoolkit/issues/364
major changes:
- Some events(PauseMark,ConcurrentMark, etc.) occur twice in a single Cycle, using their first timestamp.
- Sum the event durations and memory occupancies (live/garbage/allocated) for the young generation and old generation.
Currently a single ZGC cycle is represented by a single event. For genZ I was looking at 2 events. I've thought of having an event per phase but I was concerned that this might lead to some downstream confusion with the analytics. Also, as you've mentioned, repeated phases per cycle is an issue. This may become even more confused depending on the log levels used by different projects. So, I'm leaning towards the single event per cycle but I'm not stuck on it. Are there reasons to create event per phase within a cycle that I'm missing?
I'm inclined to think you're right to be concerned. Creating events per phase seems to break the "consensus" that each GCID represents a separate gc event. It may cause confusion in the counting of gc events.
@kcpeppe Do you have time to take a look at this PR? Or if you have new plans for the genZ, please let me know :)
This PR has caused me to reverse my thinking about how to integrate genZ into GCToolKit. I'd like to make a couple of mods and then merge.