Table of Contents

Class MetalTelemetryManager

Namespace
DotCompute.Backends.Metal.Telemetry
Assembly
DotCompute.Backends.Metal.dll

Central telemetry coordination for Metal backend with production-grade monitoring. Consolidated using BaseTelemetryProvider to eliminate duplicate patterns.

public sealed class MetalTelemetryManager : BaseTelemetryProvider, ITelemetryProvider, IDisposable
Inheritance
MetalTelemetryManager
Implements
Inherited Members
Extension Methods

Constructors

MetalTelemetryManager(IOptions<MetalTelemetryOptions>, ILogger<MetalTelemetryManager>, ILoggerFactory)

public MetalTelemetryManager(IOptions<MetalTelemetryOptions> options, ILogger<MetalTelemetryManager> logger, ILoggerFactory loggerFactory)

Parameters

options IOptions<MetalTelemetryOptions>
logger ILogger<MetalTelemetryManager>
loggerFactory ILoggerFactory

Properties

HealthMonitor

Gets the health monitor instance for external health queries.

public MetalHealthMonitor? HealthMonitor { get; }

Property Value

MetalHealthMonitor

Methods

Dispose(bool)

protected override void Dispose(bool disposing)

Parameters

disposing bool

ExportMetricsAsync(CancellationToken)

Exports metrics to configured monitoring systems

public Task ExportMetricsAsync(CancellationToken cancellationToken = default)

Parameters

cancellationToken CancellationToken

Returns

Task

GenerateProductionReport()

Generates comprehensive production report

public MetalProductionReport GenerateProductionReport()

Returns

MetalProductionReport

GetBackendType()

Gets the backend type identifier (e.g., "CUDA", "Metal", "OpenCL", "CPU").

protected override string GetBackendType()

Returns

string

GetCurrentSnapshot()

Gets current performance metrics

public MetalTelemetrySnapshot GetCurrentSnapshot()

Returns

MetalTelemetrySnapshot

RecordDeviceUtilization(double, double, long, long)

Records device utilization metrics

public void RecordDeviceUtilization(double gpuUtilization, double memoryUtilization, long totalMemory, long usedMemory)

Parameters

gpuUtilization double
memoryUtilization double
totalMemory long
usedMemory long

RecordErrorEvent(MetalError, string, Dictionary<string, object>?)

Records error events with context

public void RecordErrorEvent(MetalError error, string context, Dictionary<string, object>? additionalContext = null)

Parameters

error MetalError
context string
additionalContext Dictionary<string, object>

RecordKernelExecution(string, TimeSpan, long, bool, Dictionary<string, object>?)

Records kernel execution metrics

public void RecordKernelExecution(string kernelName, TimeSpan duration, long dataSize, bool success = true, Dictionary<string, object>? additionalProperties = null)

Parameters

kernelName string
duration TimeSpan
dataSize long
success bool
additionalProperties Dictionary<string, object>

RecordMemoryAllocation(long, TimeSpan, bool)

Records memory allocation metrics

public void RecordMemoryAllocation(long sizeBytes, TimeSpan duration, bool success = true)

Parameters

sizeBytes long
duration TimeSpan
success bool

RecordMemoryPressure(MemoryPressureLevel, double)

Records memory pressure levels

public void RecordMemoryPressure(MemoryPressureLevel level, double percentage)

Parameters

level MemoryPressureLevel
percentage double

RecordResourceUsage(ResourceType, long, long, long)

Records resource usage metrics

public void RecordResourceUsage(ResourceType type, long currentUsage, long peakUsage, long limit)

Parameters

type ResourceType
currentUsage long
peakUsage long
limit long