private static void CollectHandlesCount(CurrentProcessMetrics metrics) { try { if (!GetProcessHandleCount(CurrentProcessHandle, out var handleCount)) { WinMetricsCollectorHelper.ThrowOnError(); } metrics.HandlesCount = (int)handleCount; } catch (Exception error) { InternalErrorLogger.Warn(error); } }
private static unsafe void CollectMemoryMetrics(CurrentProcessMetrics metrics) { try { if (!GetProcessMemoryInfo(CurrentProcessHandle, out var memoryCounters, sizeof(PROCESS_MEMORY_COUNTERS_EX))) { WinMetricsCollectorHelper.ThrowOnError(); } metrics.MemoryResident = (long)memoryCounters.WorkingSetSize; metrics.MemoryPrivate = (long)memoryCounters.PrivateUsage; } catch (Exception error) { InternalErrorLogger.Warn(error); } }
private void CollectCpuUtilization(CurrentProcessMetrics metrics) { try { if (!WinMetricsCollectorHelper.GetSystemTimes(out _, out var systemKernel, out var systemUser)) { WinMetricsCollectorHelper.ThrowOnError(); } if (!GetProcessTimes(CurrentProcessHandle, out _, out _, out var processKernel, out var processUser)) { WinMetricsCollectorHelper.ThrowOnError(); } var systemTime = systemKernel.ToUInt64() + systemUser.ToUInt64(); var processTime = processKernel.ToUInt64() + processUser.ToUInt64(); cpuCollector.Collect(metrics, systemTime, processTime); } catch (Exception error) { InternalErrorLogger.Warn(error); } }