From b05aadccb4b8b1a9ff6a9657ab23203a3fb1e1c6 Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Fri, 2 Dec 2022 17:44:47 +0500 Subject: [PATCH] Add memory monitor --- AsbCloudInfrastructure/Startup.cs | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/AsbCloudInfrastructure/Startup.cs b/AsbCloudInfrastructure/Startup.cs index 01768371..09e92644 100644 --- a/AsbCloudInfrastructure/Startup.cs +++ b/AsbCloudInfrastructure/Startup.cs @@ -9,6 +9,7 @@ using Microsoft.Extensions.Hosting; using System; using System.Threading.Tasks; using System.Threading; +using AsbCloudInfrastructure.Background; namespace AsbCloudInfrastructure { @@ -30,9 +31,42 @@ namespace AsbCloudInfrastructure backgroundWorker.Push(OperationDetectionWorkFactory.MakeWork()); backgroundWorker.Push(SubsystemOperationTimeCalcWorkFactory.MakeWork()); backgroundWorker.Push(LimitingParameterCalcWorkFactory.MakeWork()); + backgroundWorker.Push(MakeMemoryMonitoringWork()); Task.Delay(1_000) .ContinueWith(async (_) => await backgroundWorker.StartAsync(CancellationToken.None)); } + + static WorkPeriodic MakeMemoryMonitoringWork() + { + var workId = "Memory monitoring"; + var workAction = (string _, IServiceProvider _, CancellationToken _) => { + var bytes = GC.GetTotalMemory(false); + var bytesString = FromatBytes(bytes); + System.Diagnostics.Trace.TraceInformation($"Total memory allocated is {bytesString} bytes"); + return Task.CompletedTask; + }; + var workPeriod = TimeSpan.FromMinutes(1); + var work = new WorkPeriodic(workId, workAction, workPeriod); + return work; + } + + static string FromatBytes(long bytes) + { + const double gigaByte = 1024 * 1024 * 1024; + const double megaByte = 1024 * 1024; + const double kiloByte = 1024; + + if (bytes > 10 * gigaByte) + return (bytes / gigaByte).ToString("### ### ###.## Gb"); + + if (bytes > 10 * megaByte) + return (bytes / megaByte).ToString("### ### ###.## Mb"); + + if (bytes > 10 * kiloByte) + return (bytes / megaByte).ToString("### ### ###.## Kb"); + + return bytes.ToString("### ### ###"); + } } }