コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }