MosswartMassacre/MosswartMassacre/ClientTelemetry.cs
2025-05-24 21:10:45 +02:00

35 lines
1.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Diagnostics;
using System.Threading;
using System;
public class ClientTelemetry
{
private readonly Process _proc;
public ClientTelemetry()
{
_proc = Process.GetCurrentProcess();
}
/// <summary>Working-set memory in bytes.</summary>
public long MemoryBytes => _proc.WorkingSet64;
/// <summary>Total open handles.</summary>
public int HandleCount => _proc.HandleCount;
/// <summary>CPU utilisation (%) averaged over <paramref name="sampleMs"/>.</summary>
public float GetCpuUsage(int sampleMs = 500)
{
// you can keep your PerformanceCounter variant, but heres a simpler PID-based way:
var startCpu = _proc.TotalProcessorTime;
var start = DateTime.UtcNow;
Thread.Sleep(sampleMs);
var endCpu = _proc.TotalProcessorTime;
var end = DateTime.UtcNow;
// CPUtime used across all cores:
var cpuMs = (endCpu - startCpu).TotalMilliseconds;
var elapsedMs = (end - start).TotalMilliseconds * Environment.ProcessorCount;
return (float)(cpuMs / elapsedMs * 100.0);
}
}