RFR: 8273482: Remove "foreground work" concept from WorkGang [v2]
Ralf Schmelter
rschmelter at openjdk.java.net
Fri Sep 10 07:56:06 UTC 2021
On Thu, 9 Sep 2021 20:07:25 GMT, Per Liden <pliden at openjdk.org> wrote:
>> JDK-8237354 introduced the concept of "foreground work" in WorkGang, as a special case for use by the HeapDumper. I propose that we remove this code, since this special use case can be solved without the need for the concept of "foreground work" in WorkGang.
>>
>> As far as I can tell, there's no reason why it must be the VM thread that takes on the task of writing the header, iterating over roots, etc. So, in VM_HeapDumper::work(), instead of checking if the current thread is the VM thread we can just check if the worker_id is non-zero. That way, a single worker thread will take on the task of writing the header, iterating over roots, etc, and all other worker threads will continue to call worker_loop().
>>
>> Testing:
>> - Passed Tier1-3
>> - Passed multiple runs of test/hotspot/jtreg/serviceability/dcmd/gc/
>> - Manually ran jcmd GC.heap_dump with various GCs enabled
>
> Per Liden has updated the pull request incrementally with one additional commit since the last revision:
>
> Remove asserts
The reason I've added this was, that for the shenandoah GC the heap iteration would run into assertions if not called from the VM thread. Maybe this has changed in the meantime.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5410
More information about the hotspot-gc-dev
mailing list