RFR: 8265842: G1: Introduce API to run multiple separate tasks in a single gangtask
Ivan Walulya
iwalulya at openjdk.java.net
Fri Apr 23 15:54:29 UTC 2021
On Fri, 23 Apr 2021 11:54:49 GMT, Thomas Schatzl <tschatzl at openjdk.org> wrote:
> [JDK-8214237](https://bugs.openjdk.java.net/browse/JDK-8214237) is going to join different somewhat independent (sub-)tasks of the post evacuation phase into basically two gangtasks to improve performance (reduce startup and shutdown of work gangs).
>
> To facilitate doing that, introduce an API that manages subtasks of a given gangtask and provide some helpers to do common work.
>
> This CR is only about adding the API and testing to somewhat simplify the actual move of the post evacuate tasks into parallel tasks. There is no new functionality here, only to split up [JDK-8214237](https://bugs.openjdk.java.net/browse/JDK-8214237) a bit.
>
> [Here](https://github.com/openjdk/jdk/commit/1d8667143e7d106b96c25c0b876c37f1250be132) is the full change that uses this API to implement JDK-8214237 (which I'll try to split up a bit before) to see how it will be used (in [G1YoungGCPostEvacuateTasks.hpp](https://github.com/openjdk/jdk/commit/1d8667143e7d106b96c25c0b876c37f1250be132#diff-64bc43a24e11978920bb9523cb1507a7275ace22d9eead4c34177339a3258e42) ).
>
> Testing: new gtest, tier1-5 with mentioned patch for JDK-8214237.
>
> Thanks,
> Thomas
src/hotspot/share/gc/g1/g1BatchedGangTask.cpp line 46:
> 44: task = Atomic::load(&_num_serial_tasks_done);
> 45: if (task < _serial_tasks.length()) {
> 46: task = Atomic::add(&_num_serial_tasks_done, 1) - 1;
I think `Atomic::fetch_and_add` is more appropriate in this case
Suggestion:
task = Atomic::fetch_and_add(&_num_serial_tasks_done, 1);
test/hotspot/gtest/gc/g1/test_g1BatchedGangTask.cpp line 147:
> 145: G1TestBatchedGangTask() : G1BatchedGangTask("Batched Gang Test Task", NULL) {
> 146: _serial_tasks.push(new G1SerialTestSubTask());
> 147: _parallel_tasks.push(new G1ParallelTestSubTask());
I suggest we add methods for adding serial and parallel tasks to the `G1BatchedGangTask`interface.
-------------
PR: https://git.openjdk.java.net/jdk/pull/3653
More information about the hotspot-gc-dev
mailing list