Integrated: 8273712: C2: Add mechanism for rejecting inlining of low frequency call sites and deprecate MinInliningThreshold.

Igor Veresov iveresov at openjdk.java.net
Mon Oct 25 17:07: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.

This pull request has now been integrated.

Changeset: 89671aa1
Author:    Igor Veresov <iveresov at openjdk.org>
URL:       https://git.openjdk.java.net/jdk/commit/89671aa164ea500954b0d5caa5ce6190dfbc0d4e
Stats:     38 lines in 6 files changed: 16 ins; 4 del; 18 mod

8273712: C2: Add mechanism for rejecting inlining of low frequency call sites and deprecate MinInliningThreshold.

Reviewed-by: kvn, rbackman

-------------

PR: https://git.openjdk.java.net/jdk/pull/6046


More information about the hotspot-compiler-dev mailing list