Skip to content

Commit 92cce30

Browse files
authored
Consider using Environment.CpuUsage in ResourceMonitoring (#6696)
1 parent 06d1dca commit 92cce30

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

src/Libraries/Microsoft.Extensions.Diagnostics.ResourceMonitoring/Windows/WindowsSnapshotProvider.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System;
5+
#if !NET9_0_OR_GREATER
56
using System.Diagnostics;
7+
#endif
68
using System.Diagnostics.CodeAnalysis;
79
using System.Diagnostics.Metrics;
810
using Microsoft.Extensions.Diagnostics.ResourceMonitoring.Windows.Interop;
@@ -95,18 +97,31 @@ internal WindowsSnapshotProvider(
9597

9698
public Snapshot GetSnapshot()
9799
{
100+
#if NET9_0_OR_GREATER
101+
var cpuUsage = Environment.CpuUsage;
102+
return new Snapshot(
103+
totalTimeSinceStart: TimeSpan.FromTicks(_timeProvider.GetUtcNow().Ticks),
104+
kernelTimeSinceStart: cpuUsage.PrivilegedTime,
105+
userTimeSinceStart: cpuUsage.UserTime,
106+
memoryUsageInBytes: (ulong)Environment.WorkingSet);
107+
#else
98108
using var process = Process.GetCurrentProcess();
99-
100-
return new Snapshot(totalTimeSinceStart: TimeSpan.FromTicks(_timeProvider.GetUtcNow().Ticks),
109+
return new Snapshot(
110+
totalTimeSinceStart: TimeSpan.FromTicks(_timeProvider.GetUtcNow().Ticks),
101111
kernelTimeSinceStart: process.PrivilegedProcessorTime,
102112
userTimeSinceStart: process.UserProcessorTime,
103113
memoryUsageInBytes: (ulong)Environment.WorkingSet);
114+
#endif
104115
}
105116

106117
internal static long GetCpuTicks()
107118
{
119+
#if NET9_0_OR_GREATER
120+
return Environment.CpuUsage.TotalTime.Ticks;
121+
#else
108122
using var process = Process.GetCurrentProcess();
109123
return process.TotalProcessorTime.Ticks;
124+
#endif
110125
}
111126

112127
internal static int GetCpuUnits() => Environment.ProcessorCount;

0 commit comments

Comments
 (0)