private EnvironmentResolver() { Register(EnvironmentMode.PlatformCharacteristic, RuntimeInformation.GetCurrentPlatform); Register(EnvironmentMode.RuntimeCharacteristic, RuntimeInformation.GetCurrentRuntime); Register(EnvironmentMode.JitCharacteristic, RuntimeInformation.GetCurrentJit); Register(EnvironmentMode.AffinityCharacteristic, RuntimeInformation.GetCurrentAffinity); Register(EnvironmentMode.EnvironmentVariablesCharacteristic, Array.Empty <EnvironmentVariable>); Register(EnvironmentMode.PowerPlanModeCharacteristic, () => PowerManagementApplier.Map(PowerPlan.HighPerformance)); // TODO: find a better place Register(AccuracyMode.AnalyzeLaunchVarianceCharacteristic, () => false); Register(RunMode.UnrollFactorCharacteristic, job => { // TODO: move it to another place and use the main resolver var strategy = job.ResolveValue(RunMode.RunStrategyCharacteristic, RunStrategy.Throughput); switch (strategy) { case RunStrategy.Throughput: return(DefaultUnrollFactorForThroughput); case RunStrategy.ColdStart: case RunStrategy.Monitoring: return(1); default: throw new NotSupportedException($"Unknown runStrategy: {strategy}"); } }); Register(RunMode.InvocationCountCharacteristic, () => 1); }
public void TestPowerPlanShouldNotChange() { var userPlan = PowerManagementHelper.CurrentPlan; var logger = new OutputLogger(Output); var powerManagementApplier = new PowerManagementApplier(logger); powerManagementApplier.ApplyPerformancePlan(PowerManagementApplier.Map(PowerPlan.UserPowerPlan)); Assert.Equal(userPlan.ToString(), PowerManagementHelper.CurrentPlan.ToString()); powerManagementApplier.Dispose(); Assert.Equal(userPlan, PowerManagementHelper.CurrentPlan); }
public void TestSettingAndRevertingBackGuid() { var userPlan = PowerManagementHelper.CurrentPlan; var logger = new OutputLogger(Output); var powerManagementApplier = new PowerManagementApplier(logger); powerManagementApplier.ApplyPerformancePlan(PowerManagementApplier.Map(PowerPlan.HighPerformance)); Assert.Equal(HighPerformancePlanGuid, PowerManagementHelper.CurrentPlan.ToString()); Assert.Equal("High performance", PowerManagementHelper.CurrentPlanFriendlyName); powerManagementApplier.Dispose(); Assert.Equal(userPlan, PowerManagementHelper.CurrentPlan); }
/// <summary> /// Power plan for benchmarks. /// The default value is HighPerformance. /// <remarks>Only available for Windows.</remarks> /// </summary> public static Job WithPowerPlan(this Job job, PowerPlan powerPlan) => job.WithCore(j => j.Environment.PowerPlanMode = PowerManagementApplier.Map(powerPlan));