JDK-6458537 : BiasedLocking causes 30% Performance regression in SPECjAppServer
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 6
  • Priority: P1
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris_10
  • CPU: sparc
  • Submitted: 2006-08-09
  • Updated: 2012-10-08
  • Resolved: 2006-08-25
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6 b97Fixed 7Fixed hs10Fixed
We are seeing a 30% performance regression in Mustang b90 with the server compiler.

We are still narrowing down the source of the regression (so consider this an "early warning system"), though the performance regression does not come from GC (GC times are the same between builds), nor the JDK (the b89 libjvm with the b90 JDK performs as expected).

SUGGESTED FIX http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/1.6/rc/baseline/2006/20060816163238.kbr.mustang_baseline/workspace/webrevs/webrev-2006.08.16/index.html *** (#1 of 1): [ UNSAVED ] ###@###.###

EVALUATION The last change for 6295591 moved the point at which the biasable "prototype header" is placed into each new instanceKlass. Previously it had been installed in the ClassFileParser. In order to support delaying of the onset of biased locking, this code was moved to the point at which classes are installed into the SystemDictionary, past the last potential blocking point. The root cause of this regression is an unintended semantic change due to this code motion; the biased header is being installed not only when the class is defined, but also when it is referenced from other initiating loaders. The code needs to be adjusted to only take effect for the defining loader of the class. The performance team has verified that this fixes the regression.