RFR (M): 8027476: Improve performance of Stringtable unlink, 8027455: Improve symbol table scan times during gc pauses

Thomas Schatzl thomas.schatzl at oracle.com
Fri Jan 10 09:27:49 UTC 2014


Hi all,

  could I have reviews for the following performance change?

It implements parallelization of string table and symbol table scan
during G1 full GC and remark.

This decreases the respective string table/symbol table scan times
almost linearly depending on the number of threads used.

The change is quite straightforward, similar to string table scan during
initial mark there are new possibly_parallel_unlink() methods for both
string and symbol table, that are later used in a new taskset.

Task distribution works as before, using a single claim value for each
of the tables (reusing the one for the string table) on the hash table
array.

The impact on total remark/full gc time is significant, in conjunction
with JDK-8027454 (RFR coming soon) remark time is halved.

I decided to merge these two fixes into a single webrev because these
two things are closely related, and the shared code between the two
issues is very large, and the actual code to implement one or the other
is small and easily understood (imo). Splitting would add lots of code
that would first need to be added and then removed again too.

I filed two follow-up CRs to use these new methods in the other parallel
collectors too (JDK-8031473), and another one for fine-tuning
(JDK-8031472) some parameters.

Webrev:
http://cr.openjdk.java.net/~tschatzl/8027476/webrev

CRs:
https://bugs.openjdk.java.net/browse/JDK-8027455
https://bugs.openjdk.java.net/browse/JDK-8027476

Testing:
test case, jtreg, FMW apps, specjbb2005, specjbb2013, dacapo, and lots
of other testing in the recent months

Thanks,
  Thomas





More information about the hotspot-gc-dev mailing list