Shenandoah 2.0
Simone Bordet
simone.bordet at gmail.com
Tue Oct 1 08:31:24 UTC 2019
Awesome, thanks!
On Mon, Sep 30, 2019 at 11:24 PM Roman Kennke <rkennke at redhat.com> wrote:
>
> Hi Simone,
>
> >> Regarding the traversal mode. It only has a single concurrent phase that
> >> does all of marking, compacting and updating-references in a single
> >> pass. It is book-ended by a pause each, similar to init-mark and
> >> final-update-refs pause to do initialize the traversal and to do some
> >> bookkeeping and cleanup stuff. The liveness data of one cycle feeds into
> >> the cset decisions of the subsequent cycle.
> >
> > Yes I tried to capture that into slide 53.
> > Is it correct?
>
> If I understand the slide correctly, then not. It still looks like there
> 3 phase, with overlap. It is really just one phase:
>
> idle -> STW-init -> traversal (mark+evac+update) -> STW-end -> idle
>
> and so on.
>
> >> To be honest, I am not sure
> >> this whole slide needs to exist or only serves to confuse people (even
> >> more).
> >
> > Oh. I thought it was ok to have 1 slide about traversal for completeness.
> > Why you think it's confusing?
> > And why you say "even more"?
>
> Because concurrent GCs are confusing to begin with (what with moving
> objects from under you feet while you go). Doing all in 1 phase is even
> more so.
>
> > I'd be happy to clarify or remove confusing stuff.
>
> It's not you or your slides, it's the subject matter. If you like it,
> leave Traversal GC in.
>
> >> I'd probably add one or two comparison slides at the end that highlights
> >> the pros and cons of each one.
> >
> > "Each one" as in comparison between ZGC and Shenandoah
>
> yes
>
> >, or "each one"
> > as in comparison between non-traversal and traversal?
>
> no
>
> >> That's what people usually want to know:
> >> 'which concurrent GC is for me?'
> >
> > My experience is typically divided in 2 here, at the ends of the spectrum.
> > Many don't care at all - give them ZGC or Shenandoah to replace
> > G1/CMS/Parallel because "it's better" and they switch blindly.
> > Few are GC maniacs and put 42 command line options to tune everything
> > because they read so on StackOverflow.
> > Those that can tell apart ZGC and Shenandoah may have some idea
> > already of what's better for their use case, but again they are savvy
> > enough to try both and actually verify what's better for them.
>
> Well, such slides would help the former 2 categories of users to become
> more educated, and may also have something new for the experts in
> category 3, I'd think :-)
>
> > Honestly I can't tell myself.
> > I like better ZGC for simplicity than Shenandoah.
>
> From users perspective, both are pretty much -XX:+UseZGC or
> -XX:+UseShenandoahGC and not much to configure. Even power users will
> rarely need much tuning, so yeah.
>
> > OTOH, I think Shenandoah is more sophisticated and may deal/degrade
> > better in edge cases (pacing, degenerate and full).
> > Plus Shenandoah is available in many architectures, OSes, Java versions.
>
> yeah, and compressed oops is a big deal for some users.
>
> > In edge cases, I'd feel more confident in enlarging the heap than
> > trying to tune edge cases.
> > If both GCs are slightly overprovisioned in heap size (so that they
> > never reach danger zone), GC pauses are basically a solved problem, so
> > either ZGC or Shenandoah will do the job.
> > I may be grossly oversimplifying here, but I'm open to hear opinions
> > from the source ;)
>
> Yeah that's pretty much it. Shenandoah's pacing/degrading helps with
> avoiding the edge-cases even with tight heaps, there's not much to tune
> for this either.
>
> I hope this clarifies a little.
>
> Roman
>
--
Simone Bordet
---
Finally, no matter how good the architecture and design are,
to deliver bug-free software with optimal performance and reliability,
the implementation technique must be flawless. Victoria Livschitz
More information about the shenandoah-dev
mailing list