Dear all,
I would like to ask reviews on 8154736 “enhancement of cmpxchg and copy_to_survivor”. The change adds options to avoid expensive syncs with compare-and-exchange. An experiment by using SPECjbb2015 showed 6% improvement in critical-jOPS. This change focuses on ppc64 but would be potentially beneficial for aarch64.
Although discussions stopped at http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/2016-October/002718.html, I would like to restart the review by taking over Hiroshi's work if the discussion is still open.
Bug: https://bugs.openjdk.java.net/browse/JDK-8154736
Webrev: http://cr.openjdk.java.net/~mhorie/8154736/webrev.08/
Previous review had discussions on improper log output (http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/2016-September/002672.html). Logs can be generated properly with this change, but I would like to ask if we should use “if(log) OrderAccess:acquire()” as is in webrev or more general approach with a call to OrderAccess:consume() with empty implementation on all supported platforms.
Also, there were discussions on the problem of unawareness of copied obj (http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/2016-October/002696.html). This change adds “release” in cmpxchg_pre_membar. This was discussed in http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/2016-October/002698.html.
I measured SPECjbb2015 with its multi JVMs mode on a POWER8 node (for JDK11, I modified MANIFEST in specjbb2015.jar to specify locations of JAXB related libraries). As a result, critical-jOPS improved by 6% due to this change.
Best regards,
--
Michihiro,
IBM Research - Tokyo