public void RegisterMetrics(MetricFactory metrics) { if (!_jitVerbose.Enabled && !_runtimeCounters.Enabled) { return; } if (_runtimeCounters.Enabled) { BytesJitted = metrics.CreateGauge("dotnet_jit_il_bytes", "Total bytes of IL compiled by the JIT compiler"); _runtimeCounters.Events.IlBytesJitted += e => BytesJitted.Set(e.Mean); } if (_jitVerbose.Enabled) { MethodsJittedTotal = metrics.CreateCounter("dotnet_jit_method_total", "Total number of methods compiled by the JIT compiler, broken down by compilation for dynamic code", DynamicLabel); MethodsJittedSecondsTotal = metrics.CreateCounter("dotnet_jit_method_seconds_total", "Total number of seconds spent in the JIT compiler, broken down by compilation for dynamic code", DynamicLabel); _jitVerbose.Events.CompilationComplete += e => { MethodsJittedTotal.Labels(e.IsMethodDynamic.ToLabel()).Inc(); MethodsJittedSecondsTotal.Labels(e.IsMethodDynamic.ToLabel()).Inc(e.CompilationDuration.TotalSeconds); }; CpuRatio = metrics.CreateGauge("dotnet_jit_cpu_ratio", "The amount of total CPU time consumed spent JIT'ing"); } else { MethodsJittedTotal = metrics.CreateCounter("dotnet_jit_method_total", "Total number of methods compiled by the JIT compiler"); _runtimeCounters.Events.MethodsJittedCount += e => MethodsJittedTotal.Inc(e.Mean - MethodsJittedTotal.Value); } }
public void ProcessEvent(EventWrittenEventArgs e) { if (_eventPairTimer.TryGetEventPairDuration(e, out var duration)) { // dynamic methods are of special interest to us- only a certain number of JIT'd dynamic methods // will be cached. Frequent use of dynamic can cause methods to be evicted from the cache and re-JIT'd var methodFlags = (uint)e.Payload[5]; var dynamicLabelValue = (methodFlags & 0x1) == 0x1 ? LabelValueTrue : LabelValueFalse; MethodsJittedTotal.Labels(dynamicLabelValue).Inc(); MethodsJittedSecondsTotal.Labels(dynamicLabelValue).Inc(duration.TotalSeconds); } }
public void RegisterMetrics(MetricFactory metrics) { if (!_jitVerbose.Enabled) { return; } MethodsJittedTotal = metrics.CreateCounter("dotnet_jit_method_total", "Total number of methods compiled by the JIT compiler", DynamicLabel); MethodsJittedSecondsTotal = metrics.CreateCounter("dotnet_jit_method_seconds_total", "Total number of seconds spent in the JIT compiler", DynamicLabel); _jitVerbose.Events.CompilationComplete += e => { MethodsJittedTotal.Labels(e.IsMethodDynamic.ToLabel()).Inc(); MethodsJittedSecondsTotal.Labels(e.IsMethodDynamic.ToLabel()).Inc(e.CompilationDuration.TotalSeconds); }; CpuRatio = metrics.CreateGauge("dotnet_jit_cpu_ratio", "The amount of total CPU time consumed spent JIT'ing"); }