RFR: Grand heuristics and tests rehash
Aleksey Shipilev
shade at redhat.com
Thu Sep 6 19:37:19 UTC 2018
On 09/06/2018 08:12 PM, Roman Kennke wrote:
> We should probably discuss and decide what to do with the partial
> heuristics. As you said, nobody's using them, and they don't currently
> have any practical advantage over adaptive or traversal (at least not
> that I know of). Their code now builds largely on traversal algorithm,
> and does add some complexity to it which could be avoided if we dropped
> partial. The main thing it does add barrier-wise is the matrix stuff,
> which *is* significant burden, and hasn't yet turned out to be very
> useful either.
>
> I do have some plans in the back in my mind to make a truly
> (multi-)concurrent, generational Shenandoah, which would build on
> traversal too, but not on current partial/generational stuff. It
> wouldn't use matrix/barriers either, it would instead use the classic
> dirty-cards approach. All of which means, we may well drop partial
> now/soonish, unless we have good reasons to keep it?
I spent some time yesterday trying to whip partial in shape and understand how salvageable the whole
thing is, and it seem to have bit-rotted quite heavily. For example, the way traversal tracks
liveness and tries to avoid recently allocated regions (for which liveness is not available) means
that "generational" heuristics never does any useful minor collections. With "connectedness", on
workloads I tried, the matrix gets clobbered with connections very easily. On LRUFragger, "LRU" is
no better than our current normal cycle with pacing and evac-reserve.
I have not proposed to purge it, because I thought matrix would be useful for true generational, and
partial heuristics make sure matrix barriers are in shape for that. But it sounds like that is not
needed for future work.
Therefore, I vote for removing all partial heuristics and the associated matrix code. Removing that
code simplifies our development, testing, and backporting significantly. There is even less need to
drag this thing upstream. If we ever need matrix stuff back, we can revert it from the Mercurial
history.
-Aleksey
More information about the shenandoah-dev
mailing list