summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNoah Falk <noahfalk@users.noreply.github.com>2018-04-10 20:35:33 -0700
committerGitHub <noreply@github.com>2018-04-10 20:35:33 -0700
commit6854a3ea1f0946a115de208dbb2371896c3ca23a (patch)
tree00b5265d1edd7efb60fddfd7656a329318ff8322 /tests
parent2ffcdd00249fd37e3c0d823df79ff19579028d66 (diff)
downloadcoreclr-6854a3ea1f0946a115de208dbb2371896c3ca23a.tar.gz
coreclr-6854a3ea1f0946a115de208dbb2371896c3ca23a.tar.bz2
coreclr-6854a3ea1f0946a115de208dbb2371896c3ca23a.zip
Fix x86 steady state tiered compilation performance (#17476)
* Fix x86 steady state tiered compilation performance Also included - a few tiered compilation only test hooks + small logging fix for JitBench Tiered compilation wasn't correctly implementing the MayHavePrecode and RequiresStableEntryPoint policy functions. On x64 this was a non-issue, but due to compact entrypoints on x86 it lead to methods allocating both FuncPtrStubs and Precodes. The FuncPtrStubs would never get backpatched which caused never ending invocations of the Prestub for some methods. Although such code still runs correctly, it is much slower than it needs to be. On MusicStore x86 I am seeing a 20% improvement in steady state RPS after this fix, bringing us inline with what I've seen on x64.
Diffstat (limited to 'tests')
-rw-r--r--tests/src/performance/Scenario/JitBench/Runner/Benchmark.cs10
1 files changed, 4 insertions, 6 deletions
diff --git a/tests/src/performance/Scenario/JitBench/Runner/Benchmark.cs b/tests/src/performance/Scenario/JitBench/Runner/Benchmark.cs
index 85185b449a..13554c896e 100644
--- a/tests/src/performance/Scenario/JitBench/Runner/Benchmark.cs
+++ b/tests/src/performance/Scenario/JitBench/Runner/Benchmark.cs
@@ -71,15 +71,13 @@ namespace JitBench
startInfo.WorkingDirectory = WorkingDirPath;
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardOutput = true;
- foreach (KeyValuePair<string, string> kv in config.EnvironmentVariables)
+ IEnumerable<KeyValuePair<string, string>> extraEnvVars = config.EnvironmentVariables.Concat(EnvironmentVariables).Append(new KeyValuePair<string, string>("DOTNET_MULTILEVEL_LOOKUP", "0"));
+ foreach (KeyValuePair<string, string> kv in extraEnvVars)
{
startInfo.Environment[kv.Key] = kv.Value;
}
- foreach (KeyValuePair<string, string> kv in EnvironmentVariables)
- {
- startInfo.Environment[kv.Key] = kv.Value;
- }
- startInfo.Environment["DOTNET_MULTILEVEL_LOOKUP"] = "0";
+ output.WriteLine("XUnitPerfHarness doesn't log env vars it uses to run processes. To workaround, logging them here:");
+ output.WriteLine(string.Join(", ", extraEnvVars.Select(kv => kv.Key + "=" + kv.Value)));
BenchmarkRunResult result = new BenchmarkRunResult(this, config);
StringBuilder stderr = new StringBuilder();