Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 293630e

Browse files
kouvelKoundinya Veluri
authored andcommitted
Enable Tiered Compilation by default (#19525)
Port of #19525 to 2.2 1) Changes the default state of the tiered compilation feature check to be ON BY DEFAULT 2) Removed comments about the source about this being a work in progress. Although it will surely continue to evolve and improve, remaining issues would be better tracked in our issue tracking system with the same default presumption as other runtime features - assume it works unless noted otherwise. 3) Adjusts a number of tests and automated scripts that made assumptions that the default setting of this feature is off. 4) Stop accepting the deprecated env var COMPLUS_EXPERIMENTAL_TieredCompilation. I'm not aware it has any remaining usage but if so we're going to find out. 5) Adjust config names for JitBench
1 parent 14d728a commit 293630e

File tree

12 files changed

+53
-59
lines changed

12 files changed

+53
-59
lines changed

Documentation/project-docs/clr-configuration-knobs.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -770,8 +770,7 @@ Name | Description | Type | Class | Default Value | Flags
770770

771771
Name | Description | Type | Class | Default Value | Flags
772772
-----|-------------|------|-------|---------------|-------
773-
`EXPERIMENTAL_TieredCompilation` | Deprecated - Use COMPLUS_TieredCompilation | `DWORD` | `UNSUPPORTED` | `0` |
774-
`TieredCompilation` | Enables tiered compilation | `DWORD` | `EXTERNAL` | `0` |
773+
`TieredCompilation` | Enables tiered compilation | `DWORD` | `EXTERNAL` | `1` |
775774
`TieredCompilation_Test_CallCounting` | Enabled by default (only activates when TieredCompilation is also enabled). If disabled immediately backpatches prestub, and likely prevents any tier1 promotion | `DWORD` | `UNSUPPORTED` | `1` |
776775
`TieredCompilation_Test_OptimizeTier0` | Use optimized codegen (normally used by tier1) in tier0 | `DWORD` | `UNSUPPORTED` | `0` |
777776
`TieredCompilation_Tier1CallCountingDelayMs` | Delay in milliseconds since process startup or the last tier 0 JIT before call counting begins for tier 1 promotion. | `DWORD` | `UNSUPPORTED` | `100` |

src/inc/clrconfigvalues.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -650,8 +650,7 @@ RETAIL_CONFIG_DWORD_INFO(INTERNAL_HillClimbing_GainExponent,
650650
/// Tiered Compilation
651651
///
652652
#ifdef FEATURE_TIERED_COMPILATION
653-
RETAIL_CONFIG_DWORD_INFO(EXTERNAL_TieredCompilation, W("TieredCompilation"), 0, "Enables tiered compilation")
654-
RETAIL_CONFIG_DWORD_INFO(UNSUPPORTED_LEGACY_TieredCompilation, W("EXPERIMENTAL_TieredCompilation"), 0, "Deprecated - Use COMPLUS_TieredCompilation")
653+
RETAIL_CONFIG_DWORD_INFO(EXTERNAL_TieredCompilation, W("TieredCompilation"), 1, "Enables tiered compilation")
655654
RETAIL_CONFIG_DWORD_INFO(UNSUPPORTED_TieredCompilation_Tier1CallCountThreshold, W("TieredCompilation_Tier1CallCountThreshold"), 30, "Number of times a method must be called after which it is promoted to tier 1.")
656655
RETAIL_CONFIG_DWORD_INFO(UNSUPPORTED_TieredCompilation_Tier1CallCountingDelayMs, W("TieredCompilation_Tier1CallCountingDelayMs"), 100, "A perpetual delay in milliseconds that is applied to tier 1 call counting and jitting, while there is tier 0 activity.")
657656
RETAIL_CONFIG_DWORD_INFO(UNSUPPORTED_TieredCompilation_Tier1DelaySingleProcMultiplier, W("TieredCompilation_Tier1DelaySingleProcMultiplier"), 10, "Multiplier for TieredCompilation_Tier1CallCountingDelayMs that is applied on a single-processor machine or when the process is affinitized to a single processor.")

src/vm/eeconfig.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,9 +1240,7 @@ HRESULT EEConfig::sync()
12401240
dwSleepOnExit = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_SleepOnExit);
12411241

12421242
#if defined(FEATURE_TIERED_COMPILATION)
1243-
fTieredCompilation = Configuration::GetKnobBooleanValue(W("System.Runtime.TieredCompilation"), CLRConfig::EXTERNAL_TieredCompilation) ||
1244-
//this older name is deprecated, but still accepted for a time. Preserving it is a very small overhead not to needlessly break things.
1245-
CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_LEGACY_TieredCompilation) != 0;
1243+
fTieredCompilation = Configuration::GetKnobBooleanValue(W("System.Runtime.TieredCompilation"), CLRConfig::EXTERNAL_TieredCompilation) != 0;
12461244

12471245
fTieredCompilation_CallCounting = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_TieredCompilation_Test_CallCounting) != 0;
12481246
fTieredCompilation_OptimizeTier0 = CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_TieredCompilation_Test_OptimizeTier0) != 0;

src/vm/tieredcompilation.cpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,6 @@
2020
// handles logistics of getting new code created and installed.
2121
//
2222
//
23-
// # Current feature state
24-
//
25-
// This feature is a work in progress. It should be functionally correct for a
26-
// good range of scenarios, but performance varies by scenario. To enable it
27-
// you need to set COMPLUS_TieredCompilation = 1. This feature has been
28-
// tested with all of our runtime and CoreFX functional tests, as well as
29-
// diagnostics tests and various partner testing in Visual Studio.
30-
//
31-
//
3223
// # Important entrypoints in this code:
3324
//
3425
//

tests/runtest.cmd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ if /i "%1" == "GenerateLayoutOnly" (set __GenerateLayoutOnly=1&shift&goto Arg
8080
if /i "%1" == "PerfTests" (set __PerfTests=true&shift&goto Arg_Loop)
8181
if /i "%1" == "runcrossgentests" (set RunCrossGen=true&shift&goto Arg_Loop)
8282
if /i "%1" == "link" (set DoLink=true&set ILLINK=%2&shift&shift&goto Arg_Loop)
83+
REM tieredcompilation is on by default now, but setting this environment variable is harmless and I didn't want to break any automation that might be using it just yet
8384
if /i "%1" == "tieredcompilation" (set COMPLUS_TieredCompilation=1&shift&goto Arg_Loop)
8485
if /i "%1" == "gcname" (set COMPlus_GCName=%2&shift&shift&goto Arg_Loop)
8586
if /i "%1" == "timeout" (set __TestTimeout=%2&shift&shift&goto Arg_Loop)

tests/scripts/run-xunit-perf.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -457,8 +457,9 @@ def main(args):
457457
# Set up environment for running tests
458458
if optLevel == 'min_opts':
459459
myEnv['COMPlus_JITMinOpts'] = '1'
460-
elif optLevel == 'tiered':
461-
myEnv['COMPLUS_TieredCompilation'] = '1'
460+
myEnv['COMPLUS_TieredCompilation'] = '0'
461+
elif optLevel == 'full_opt':
462+
myEnv['COMPLUS_TieredCompilation'] = '0'
462463

463464
if not 'XUNIT_PERFORMANCE_MAX_ITERATION' in myEnv:
464465
myEnv['XUNIT_PERFORMANCE_MAX_ITERATION'] = '21'

tests/src/CLRTest.Execute.Bash.targets

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,17 @@ then
8181
exit $(GCBashScriptExitCode)
8282
fi
8383
]]></BashCLRTestEnvironmentCompatibilityCheck>
84-
<BashCLRTestEnvironmentCompatibilityCheck Condition="'$(JitOptimizationSensitive)' == 'true'"><![CDATA[
84+
<BashCLRTestEnvironmentCompatibilityCheck Condition="'$(JitOptimizationSensitive)' == 'true'">
85+
<![CDATA[
8586
$(BashCLRTestEnvironmentCompatibilityCheck)
86-
if [[ ( ! -z "$COMPlus_JitStress" ) || ( ! -z "$COMPlus_JitStressRegs" ) || ( ! -z "$COMPlus_JITMinOpts" ) || ( ! -z "$COMPlus_TailcallStress" ) || ( ! -z "$COMPlus_EXPERIMENTAL_TieredCompilation" ) || ( ! -z "$COMPlus_TieredCompilation" ) ]]
87+
if [[ ( ! -z "$COMPlus_JitStress" ) || ( ! -z "$COMPlus_JitStressRegs" ) || ( ! -z "$COMPlus_JITMinOpts" ) || ( ! -z "$COMPlus_TailcallStress" ) ]]
88+
then
89+
echo "SKIPPING EXECUTION BECAUSE ONE OR MORE OF (COMPlus_JitStress, COMPlus_JitStressRegs, COMPlus_JITMinOpts, COMPlus_TailcallStress) IS SET"
90+
exit $(GCBashScriptExitCode)
91+
fi
92+
if [[ "$COMPlus_TieredCompilation" != "0" ]]
8793
then
88-
echo "SKIPPING EXECUTION BECAUSE ONE OR MORE OF (COMPlus_JitStress, COMPlus_JitStressRegs, COMPlus_JITMinOpts, COMPlus_TailcallStress, COMPlus_EXPERIMENTAL_TieredCompilation, COMPlus_TieredCompilation) IS SET"
94+
echo "SKIPPING EXECUTION BECAUSE COMPlus_TieredCompilation has not been disabled and this test is marked JitOptimizationSensitive"
8995
exit $(GCBashScriptExitCode)
9096
fi
9197
]]></BashCLRTestEnvironmentCompatibilityCheck>

tests/src/CLRTest.Execute.Batch.targets

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,19 @@ IF NOT "%COMPlus_GCStress%"=="" (
7676
Exit /b 0
7777
)
7878
]]></BatchCLRTestEnvironmentCompatibilityCheck>
79-
<BatchCLRTestEnvironmentCompatibilityCheck Condition="'$(JitOptimizationSensitive)' == 'true'"><![CDATA[
79+
<BatchCLRTestEnvironmentCompatibilityCheck Condition="'$(JitOptimizationSensitive)' == 'true'">
80+
<![CDATA[
8081
$(BatchCLRTestEnvironmentCompatibilityCheck)
81-
IF "%COMPlus_JitStress%"=="" IF "%COMPlus_JitStressRegs%"=="" IF "%COMPlus_JITMinOpts%"=="" IF "%COMPlus_TailcallStress%"=="" IF "%COMPlus_EXPERIMENTAL_TieredCompilation%"=="" IF "%COMPlus_TieredCompilation%"=="" goto :Compatible1
82-
ECHO SKIPPING EXECUTION BECAUSE ONE OR MORE OF (COMPlus_JitStress, COMPlus_JitStressRegs, COMPlus_JITMinOpts, COMPlus_TailcallStress, COMPlus_EXPERIMENTAL_TieredCompilation, COMPlus_TieredCompilation) IS SET
82+
IF "%COMPlus_JitStress%"=="" IF "%COMPlus_JitStressRegs%"=="" IF "%COMPlus_JITMinOpts%"=="" IF "%COMPlus_TailcallStress%"=="" IF "%COMPlus_TieredCompilation%"=="" goto :Compatible1
83+
ECHO SKIPPING EXECUTION BECAUSE ONE OR MORE OF (COMPlus_JitStress, COMPlus_JitStressRegs, COMPlus_JITMinOpts, COMPlus_TailcallStress, COMPlus_TieredCompilation) IS SET
8384
popd
8485
Exit /b 0
8586
:Compatible1
87+
IF "%COMPlus_TieredCompilation%"=="0" goto :Compatible2
88+
ECHO SKIPPING EXECUTION BECAUSE COMPlus_TieredCompilation has not been disabled and this test is marked JitOptimizationSensitive
89+
popd
90+
Exit /b 0
91+
:Compatible2
8692
]]></BatchCLRTestEnvironmentCompatibilityCheck>
8793
<BatchCLRTestEnvironmentCompatibilityCheck Condition="'$(HeapVerifyIncompatible)' == 'true'"><![CDATA[
8894
$(BatchCLRTestEnvironmentCompatibilityCheck)

tests/src/baseservices/exceptions/stacktrace/Tier1StackTrace.csproj

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,5 @@
1919
<ItemGroup>
2020
<Compile Include="Tier1StackTrace.cs" />
2121
</ItemGroup>
22-
<PropertyGroup>
23-
<CLRTestBatchPreCommands><![CDATA[
24-
$(CLRTestBatchPreCommands)
25-
set COMPlus_TieredCompilation=1
26-
]]></CLRTestBatchPreCommands>
27-
<BashCLRTestPreCommands><![CDATA[
28-
$(BashCLRTestPreCommands)
29-
export COMPlus_TieredCompilation=1
30-
]]></BashCLRTestPreCommands>
31-
</PropertyGroup>
3222
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.targets))\dir.targets" />
3323
</Project>

tests/src/performance/Scenario/JitBench/Runner/BenchmarkConfiguration.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,19 @@ public BenchmarkConfiguration()
1111
Name = "Default";
1212
EnvironmentVariables = new Dictionary<string, string>();
1313
}
14+
1415
public bool IsDefault { get { return Name == "Default"; } }
1516
public string Name { get; set; }
1617
public Dictionary<string, string> EnvironmentVariables { get; private set; }
1718

18-
public BenchmarkConfiguration WithTiering()
19+
public BenchmarkConfiguration WithoutTiering()
1920
{
20-
return WithModifier("Tiering", "COMPLUS_TieredCompilation", "1");
21+
return WithModifier("NoTiering", "COMPlus_TieredCompilation", "0");
2122
}
2223

2324
public BenchmarkConfiguration WithMinOpts()
2425
{
25-
return WithModifier("Minopts", "COMPLUS_JitMinOpts", "1");
26+
return WithModifier("Minopts", "COMPlus_JitMinOpts", "1");
2627
}
2728

2829
public BenchmarkConfiguration WithNoR2R()
@@ -32,7 +33,7 @@ public BenchmarkConfiguration WithNoR2R()
3233

3334
public BenchmarkConfiguration WithNoNgen()
3435
{
35-
return WithModifier("NoNgen", "COMPLUS_ZapDisable", "1");
36+
return WithModifier("NoNgen", "COMPlus_ZapDisable", "1");
3637
}
3738

3839
private BenchmarkConfiguration WithModifier(string modifier, string variableName, string variableValue)

0 commit comments

Comments
 (0)