public SystemStatsHelper(ILogger log, ICheckpoint writerCheckpoint) { Ensure.NotNull(log, "log"); Ensure.NotNull(writerCheckpoint, "writerCheckpoint"); _log = log; _writerCheckpoint = writerCheckpoint; _perfCounter = new PerfCounterHelper(_log); }
public SystemStatsHelper(ILogger log, ICheckpoint writerCheckpoint, string dbPath, long collectIntervalMs) { Ensure.NotNull(log, "log"); Ensure.NotNull(writerCheckpoint, "writerCheckpoint"); _log = log; _writerCheckpoint = writerCheckpoint; _perfCounter = new PerfCounterHelper(_log); _eventCountersHelper = new EventCountersHelper(collectIntervalMs); _dbPath = dbPath; }
private void GetPerfCounterInformation(Dictionary <string, object> stats, int count) { if (_giveup) { return; } var process = Process.GetCurrentProcess(); try { _perfCounter.RefreshInstanceName(); var procCpuUsage = _perfCounter.GetProcCpuUsage(); stats["proc-startTime"] = process.StartTime.ToUniversalTime().ToString("O"); stats["proc-id"] = process.Id; stats["proc-mem"] = new StatMetadata(process.WorkingSet64, "Process", "Process Virtual Memory"); stats["proc-cpu"] = new StatMetadata(procCpuUsage, "Process", "Process Cpu Usage"); stats["proc-cpuScaled"] = new StatMetadata(procCpuUsage / Environment.ProcessorCount, "Process", "Process Cpu Usage Scaled by Logical Processor Count"); stats["proc-threadsCount"] = _perfCounter.GetProcThreadsCount(); stats["proc-contentionsRate"] = _perfCounter.GetContentionsRateCount(); stats["proc-thrownExceptionsRate"] = _perfCounter.GetThrownExceptionsRate(); stats["sys-cpu"] = _perfCounter.GetTotalCpuUsage(); stats["sys-freeMem"] = GetFreeMem(); var gcStats = _perfCounter.GetGcStats(); stats["proc-gc-allocationSpeed"] = gcStats.AllocationSpeed; stats["proc-gc-gen0ItemsCount"] = gcStats.Gen0ItemsCount; stats["proc-gc-gen0Size"] = gcStats.Gen0Size; stats["proc-gc-gen1ItemsCount"] = gcStats.Gen1ItemsCount; stats["proc-gc-gen1Size"] = gcStats.Gen1Size; stats["proc-gc-gen2ItemsCount"] = gcStats.Gen2ItemsCount; stats["proc-gc-gen2Size"] = gcStats.Gen2Size; stats["proc-gc-largeHeapSize"] = gcStats.LargeHeapSize; stats["proc-gc-timeInGc"] = gcStats.TimeInGc; stats["proc-gc-totalBytesInHeaps"] = gcStats.TotalBytesInHeaps; } catch (InvalidOperationException) { _log.Info("Received error reading counters. Attempting to rebuild."); _perfCounter = new PerfCounterHelper(_log); _giveup = count > 10; if (_giveup) { _log.Error("Maximum rebuild attempts reached. Giving up on rebuilds."); } else { GetPerfCounterInformation(stats, count + 1); } } }
public async void StartLogging() { while (!_disposed) { await Task.Delay(_logFrequency); // Get system CPU string CPU = PerfCounterHelper.GetSystemCPU(); // Get process's working memory in MB Process curProcess = Process.GetCurrentProcess(); long procMemoryMB = curProcess.WorkingSet64 >> 20; // Add data to CSV DateTime now = DateTime.Now; writeToCSV(now, CPU, procMemoryMB); if (_logToConsole) { Console.WriteLine($"[{now}]: CPU: {CPU}%, Memory: {procMemoryMB} MB"); } } }
private void GetPerfCounterInformation(Dictionary <string, object> stats, int count) { if (_giveup) { return; } var process = Process.GetCurrentProcess(); try { stats["proc-startTime"] = process.StartTime.ToUniversalTime().ToString("O"); stats["proc-id"] = process.Id; stats["proc-mem"] = new StatMetadata(process.WorkingSet64, "Process", "Process Virtual Memory"); stats["proc-cpu"] = new StatMetadata(_perfCounter.GetProcCpuUsage(), "Process", "Process Cpu Usage"); stats["proc-threadsCount"] = _perfCounter.GetProcThreadsCount(); stats["proc-contentionsRate"] = _perfCounter.GetContentionsRateCount(); stats["proc-thrownExceptionsRate"] = _perfCounter.GetThrownExceptionsRate(); stats["sys-cpu"] = _perfCounter.GetTotalCpuUsage(); stats["sys-freeMem"] = GetFreeMem(); } catch (InvalidOperationException) { _log.Info("Received error reading counters. Attempting to rebuild."); _perfCounter = new PerfCounterHelper(_log); _giveup = count > 10; if (_giveup) { _log.Error("Maximum rebuild attempts reached. Giving up on rebuilds."); } else { GetPerfCounterInformation(stats, count + 1); } } }
private void GetPerfCounterInformation(Dictionary <string, object> stats, int count) { if (_giveup) { return; } var process = Process.GetCurrentProcess(); try { stats["proc-startTime"] = process.StartTime.ToUniversalTime().ToString("O"); stats["proc-id"] = process.Id; stats["proc-mem"] = new StatMetadata(process.WorkingSet64, "Process", "Process Virtual Memory"); stats["proc-cpu"] = new StatMetadata(_eventCountersHelper.GetProcCpuUsage(), "Process", "Process Cpu Usage"); stats["proc-threadsCount"] = _eventCountersHelper.GetProcThreadsCount(); stats["proc-contentionsRate"] = _eventCountersHelper.GetContentionsRateCount(); stats["proc-thrownExceptionsRate"] = _eventCountersHelper.GetThrownExceptionsRate(); switch (OS.OsFlavor) { case OsFlavor.Windows: stats["sys-cpu"] = _perfCounter.GetTotalCpuUsage(); break; case OsFlavor.Linux: case OsFlavor.MacOS: var loadAverages = _hostStat.GetLoadAverages(); stats["sys-loadavg-1m"] = loadAverages.Average1m; stats["sys-loadavg-5m"] = loadAverages.Average5m; stats["sys-loadavg-15m"] = loadAverages.Average15m; break; default: stats["sys-cpu"] = -1; break; } stats["sys-freeMem"] = GetFreeMem(); var gcStats = _eventCountersHelper.GetGcStats(); stats["proc-gc-allocationSpeed"] = gcStats.AllocationSpeed; stats["proc-gc-gen0ItemsCount"] = gcStats.Gen0ItemsCount; stats["proc-gc-gen0Size"] = gcStats.Gen0Size; stats["proc-gc-gen1ItemsCount"] = gcStats.Gen1ItemsCount; stats["proc-gc-gen1Size"] = gcStats.Gen1Size; stats["proc-gc-gen2ItemsCount"] = gcStats.Gen2ItemsCount; stats["proc-gc-gen2Size"] = gcStats.Gen2Size; stats["proc-gc-largeHeapSize"] = gcStats.LargeHeapSize; stats["proc-gc-timeInGc"] = gcStats.TimeInGc; stats["proc-gc-totalBytesInHeaps"] = gcStats.TotalBytesInHeaps; } catch (InvalidOperationException) { _log.Information("Received error reading counters. Attempting to rebuild."); _perfCounter = new PerfCounterHelper(_log); _giveup = count > 10; if (_giveup) { _log.Error("Maximum rebuild attempts reached. Giving up on rebuilds."); } else { GetPerfCounterInformation(stats, count + 1); } } }
public override object GetValue(IDictionary <string, object> evt) { decimal cpuUtilization = (decimal)PerfCounterHelper.GetCurrentCpuCounter(); return(cpuUtilization); }