Skip to content

Commit 3c95650

Browse files
authored
.NET Framework support HighResolutionTimerEnabled (#740)
1 parent 1a894d2 commit 3c95650

File tree

3 files changed

+11
-19
lines changed

3 files changed

+11
-19
lines changed

src/Splunk.OpenTelemetry.AutoInstrumentation/Helpers/WinApi.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
// limitations under the License.
1515
// </copyright>
1616

17-
#if NET
18-
1917
using System.Runtime.InteropServices;
2018
using Splunk.OpenTelemetry.AutoInstrumentation.Logging;
2119

@@ -66,4 +64,3 @@ private static class Windows
6664
public static extern uint TimeEndPeriod(uint milliseconds);
6765
}
6866
}
69-
#endif

src/Splunk.OpenTelemetry.AutoInstrumentation/Plugin.cs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@
1414
// limitations under the License.
1515
// </copyright>
1616

17-
using System.Diagnostics;
1817
using System.Runtime.InteropServices;
19-
using OpenTelemetry;
2018
using OpenTelemetry.Context.Propagation;
2119
using OpenTelemetry.Exporter;
2220
using OpenTelemetry.Resources;
@@ -47,10 +45,8 @@ public class Plugin
4745
private static readonly ILogger Log = new Logger();
4846

4947
private static PprofInOtlpLogsExporter? _pprofInOtlpLogsExporter;
50-
#if NET
5148
private static int _highResTimerEnabled;
5249
private static int _highResTimerDisabled;
53-
#endif
5450

5551
private readonly Metrics _metrics = new(Settings);
5652
private readonly Traces _traces = new(Settings);
@@ -70,13 +66,14 @@ public void Initializing()
7066
Log.LogConfigurationSetup();
7167
}
7268

69+
if (
7370
#if NET
74-
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) &&
71+
RuntimeInformation.IsOSPlatform(OSPlatform.Windows) &&
72+
#endif
7573
Settings is { SnapshotsEnabled: true, HighResolutionTimerEnabled: true })
7674
{
7775
EnableHighResTimer();
7876
}
79-
#endif
8077
}
8178

8279
/// <summary>
@@ -113,7 +110,7 @@ public void ConfigureTracesOptions(OtlpExporterOptions options)
113110
/// <summary>
114111
/// Configures ASP.NET instrumentation options.
115112
/// </summary>
116-
/// <param name="options">Otlp options.</param>
113+
/// <param name="options">ASP.NET Trace InstrumentationO options.</param>
117114
public void ConfigureTracesOptions(AspNetTraceInstrumentationOptions options)
118115
{
119116
_traces.ConfigureTracesOptions(options);
@@ -124,7 +121,7 @@ public void ConfigureTracesOptions(AspNetTraceInstrumentationOptions options)
124121
/// <summary>
125122
/// Configures ASP.NET Core instrumentation options.
126123
/// </summary>
127-
/// <param name="options">Otlp options.</param>
124+
/// <param name="options">ASP.NET Core Trace InstrumentationO options.</param>
128125
public void ConfigureTracesOptions(AspNetCoreTraceInstrumentationOptions options)
129126
{
130127
_traces.ConfigureTracesOptions(options);
@@ -211,7 +208,6 @@ public TracerProviderBuilder BeforeConfigureTracerProvider(TracerProviderBuilder
211208
return builder;
212209
}
213210

214-
#if NET
215211
private static void EnableHighResTimer()
216212
{
217213
if (Interlocked.Exchange(ref _highResTimerEnabled, value: 1) != 0)
@@ -239,7 +235,6 @@ private static void DisableHighResTimer(object? o, EventArgs args)
239235

240236
WinApi.TryDisableHighResolutionTimer();
241237
}
242-
#endif
243238

244239
private static TimeSpan GetSampleExportTimeout()
245240
{

test/Splunk.OpenTelemetry.AutoInstrumentation.Tests/SettingsTests.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,15 @@ internal void PluginSettings_DefaultValues()
9696
Assert.Equal("none", settings.Realm);
9797
Assert.Null(settings.AccessToken);
9898
Assert.True(settings.TraceResponseHeaderEnabled);
99-
#if NET
99+
Assert.False(settings.HighResolutionTimerEnabled);
100100
Assert.Equal("http://localhost:4318/v1/logs", settings.ProfilerLogsEndpoint.ToString());
101101
Assert.False(settings.CpuProfilerEnabled);
102-
Assert.False(settings.MemoryProfilerEnabled);
103102
Assert.False(settings.SnapshotsEnabled);
104-
Assert.False(settings.HighResolutionTimerEnabled);
105103
Assert.Equal(10000u, settings.CpuProfilerCallStackInterval);
106104
Assert.Equal(3000u, settings.ProfilerHttpClientTimeout);
107105
Assert.Equal(500u, settings.ProfilerExportInterval);
106+
#if NET
107+
Assert.False(settings.MemoryProfilerEnabled);
108108
Assert.Equal(200u, settings.MemoryProfilerMaxMemorySamplesPerMinute);
109109
#endif
110110
}
@@ -116,17 +116,17 @@ private static void ClearEnvVars()
116116
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.Realm, null);
117117
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.AccessToken, null);
118118
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.TraceResponseHeaderEnabled, null);
119-
#if NET
120119
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.AlwaysOnProfiler.CpuProfilerEnabled, null);
121120
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.AlwaysOnProfiler.CallStackInterval, null);
122-
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.AlwaysOnProfiler.MemoryProfilerEnabled, null);
123121
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.AlwaysOnProfiler.ProfilerLogsEndpoint, null);
124122
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.AlwaysOnProfiler.ProfilerExportTimeout, null);
125123
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.AlwaysOnProfiler.ProfilerExportInterval, null);
126-
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.AlwaysOnProfiler.ProfilerMaxMemorySamples, null);
127124
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.Snapshots.Enabled, null);
128125
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.Snapshots.SamplingIntervalMs, null);
129126
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.Snapshots.SelectionRate, null);
127+
#if NET
128+
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.AlwaysOnProfiler.MemoryProfilerEnabled, null);
129+
Environment.SetEnvironmentVariable(ConfigurationKeys.Splunk.AlwaysOnProfiler.ProfilerMaxMemorySamples, null);
130130
#endif
131131
}
132132
}

0 commit comments

Comments
 (0)