RFR: 8273712: C2: Add mechanism for rejecting inlining of low frequency call sites and deprecate MinInliningThreshold.
Rickard Bäckman
rbackman at openjdk.java.net
Wed Oct 20 22:40:10 UTC 2021
On Wed, 20 Oct 2021 17:29:41 GMT, Igor Veresov <iveresov at openjdk.org> wrote:
> Currently the inlining heuristic uses absolute method invocation count to reject methods that are rarely executed (see MinInliningThreshold and its uses).
> This presents two problems:
>
> 1. Method can be rarely used in a particular caller, yet if its total execution count is high it may be still inlined.
> 2. The use of absolute counts is inherently problematic with the current compilation policy (adaptive threshold and background compilation). It leads to instabilities of inlining decisions.
>
> The proposed solution is to consider call site execution ratio in order to reject callees that are rarely executed. Set the old cutoff parameter (MinInliningThreshold) to 0 to essentially disable it and later deprecate it.
>
> Setting the introduced MinInlineFrequencyRatio = 0.0085 produces the following notable improvements:
> Renaissance-Dotty 1.23%
> Renaissance-Mnemonics 3.88%
> Renaissance-NaiveBayes 9.23%
> Renaissance-ScalaKmeans 1.36%
> SPECjvm2008-Derby 3.16%
>
> There are of course some regressions but those are few and on the order of 1.5%
>
>
> This PR will require a CSR before it can be pushed. I'll file a CSR after this is reviewed.
Looks good.
-------------
Marked as reviewed by rbackman (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/6046
More information about the hotspot-compiler-dev
mailing list