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;
}