RFR: 8240556: Abort concurrent mark after effective eager reclamation of humongous objects
Albert Mingkun Yang
ayang at openjdk.java.net
Fri Sep 18 10:22:09 UTC 2020
On Tue, 15 Sep 2020 12:40:46 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:
> Hi all,
>
> please review this change that implements concurrent mark abort as proposed by Liang Mao from Alibaba.
>
> Basically, if at the end of the concurrent start pause we notice that we went below the IHOP threshold (and it has been
> a concurrent start pause caused by humongous allocation), instead of scheduling a mark operation, we schedule a
> "concurrent undo" operation that undoes the changes. Regarding the removal of the
> test/hotspot/jtreg/gc/stress/jfr/TestStressBigAllocationGCEventsWithG1.java test: it only ever accidentally worked in
> G1. G1 never sent the AllocationRequiringGC events for GCs caused by going over the IHOP threshold for humongous
> allocations that the test actually expects. That test previously only worked because G1 could not reclaim the
> humongous objects fast enough so crossing the IHOP threshold causes a full concurrent mark. Allocations during that
> concurrent mark do not cause a GC that can reclaim these objects, so ultimately some young GC that sends the
> AllocationRequiringGC event will be sent. With concurrent undo this is not guaranteed any more, i.e. only in
> environments where concurrent undo is slow (and we'll improve it soon) this test works. The test is too timing
> dependent, and checking for the wrong thing in this case, so removing it. Testing: tbd.
src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp line 112:
> 110: bool idle() const;
> 111: bool started() const;
> 112: bool in_progress() const;
What's the motivation of moving them out of the header? Since they are quite small, placing them in the header makes
inlining possible and desirable.
src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp line 43:
> 41: G1ConcurrentMark* _cm;
> 42:
> 43: enum ServiceState : uint {
Why `: uint`? The same question for `enum Command` below as well.
-------------
PR: https://git.openjdk.java.net/jdk/pull/177
More information about the hotspot-jfr-dev
mailing list