private BaselineTracker CreateAndStartCPUBaselineTracker()

in src/ServiceProfiler.EventPipe.Otel/Microsoft.ApplicationInsights.Profiler.Shared/Orchestrations/ResourceUsageSource.cs [127:145]


    private BaselineTracker CreateAndStartCPUBaselineTracker(CpuTriggerSettings cpuTriggerSettings, IMetricsProvider cpuMetricsProvider)
    {
        BaselineTracker cpuBaselineTracker = new(
            new RollingHistoryArray<float>(
                TimeSpan.FromMinutes(cpuTriggerSettings.CpuRollingHistorySize),
                TimeSpan.FromSeconds(cpuTriggerSettings.CpuRollingHistoryInterval)),
            TimeSpan.FromSeconds(cpuTriggerSettings.CpuAverageWindow), 
            getNextMetric: cpuMetricsProvider.GetNextValue,
            logger: _loggerFactory.CreateLogger<BaselineTracker>());

        cpuBaselineTracker.RegisterCallback((oldBaseline, newBaseline) =>
        {
            _logger.LogTrace("CPU monitoring calling back. Old base: {old}, new base: {new}", oldBaseline, newBaseline);
            _currentCPUBaseline = newBaseline;
        });

        cpuBaselineTracker.Start();
        return cpuBaselineTracker;
    }