public float GetAverageCPUUsage()

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


    public float GetAverageCPUUsage()
    => LogAndReturn(() => _currentCPUBaseline, MetricsProviderCategory.CPU);

    public float GetAverageMemoryUsage()
        => LogAndReturn(() => _currentMemoryBaseline, MetricsProviderCategory.Memory);

    private BaselineTracker CreateAndStartMemoryBaselineTracker(IMetricsProvider memoryMetricsProvider, MemoryTriggerSettings memoryTriggerSettings)
    {
        // TODO: Fix with ActivatorUtilities
        BaselineTracker memoryBaselineTracker = new(
            new RollingHistoryArray<float>(
                TimeSpan.FromMinutes(memoryTriggerSettings.MemoryRollingHistorySize),
                TimeSpan.FromSeconds(memoryTriggerSettings.MemoryRollingHistoryInterval)),
                TimeSpan.FromSeconds(memoryTriggerSettings.MemoryAverageWindow), memoryMetricsProvider.GetNextValue, _loggerFactory.CreateLogger<BaselineTracker>());

        memoryBaselineTracker.RegisterCallback((oldBaseline, newBaseline) =>
        {
            _logger.LogTrace("Memory monitoring calling back. Old base: {old}, new base: {new}", oldBaseline, newBaseline);
            _currentMemoryBaseline = newBaseline;
        });

        memoryBaselineTracker.Start();

        return memoryBaselineTracker;
    }