RFR: 8221542: ~15% performance degradation due to less optimized inline decision

Jie Fu fujie at loongson.cn
Wed Mar 27 10:15:08 UTC 2019

Hi all,

JBS:    https://bugs.openjdk.java.net/browse/JDK-8221542
Webrev: http://cr.openjdk.java.net/~jiefu/monte_carlo-perf-drop/webrev.00/

## Symptom
~15% performance degradation (from 700 ops/m to 600 ops/m) was observed 
randomly on x86 while running SPECjvm2008's scimark.monte_carlo with 

## Reproduce
It can be always reproduced with the script[1] in less than 5 minutes.

## Reason
The drop was caused by a not-inline decision on 
spec.benchmarks.scimark.utils.Random::<init> in 

## Fix
It might be better to make a little change to the inline heuristic[2].

For callers without loops, the original heuristic works fine.
But for callers with loops, it would be better to make a not-inline 
decision more conservatively.

## Testing
- Running scimark.monte_carlo on jdk/x64 with -XX:-TieredCompilation for 
about 5000 times, no performance drop
   Also on jdk8u/mips64 with -XX:-TieredCompilation, no performance drop
- Running make test TEST="micro" on jdk/x64, no performance regression
- Running SPECjvm2008 on jdk8u/x64 with -XX:-TieredCompilation, no 
performance regression

For more detailed info, please see the JBS.

Could you please review it?
Thanks a lot.

Best regards,

[1] http://cr.openjdk.java.net/~jiefu/monte_carlo-perf-drop/reproduce.sh

More information about the hotspot-compiler-dev mailing list