private void ReportPeriodicInfo()
{
try
{
var curProcess = Process.GetCurrentProcess();
var workingSet = ToMegabytes((ulong)curProcess.WorkingSet64);
Log("Client_WorkingSet", workingSet);
var privateMemorySize = ToMegabytes((ulong)curProcess.PrivateMemorySize64);
Log("Client_PrivateMemorySize", privateMemorySize);
var virtualMemorySize = ToMegabytes((ulong)curProcess.VirtualMemorySize64);
Log("Client_VirtualMemorySize", virtualMemorySize);
var threadsCount = curProcess.Threads.Count;
Log("Client_ThreadCount", threadsCount);
if (!IsUnderMono)
{
var memInfo = SafeNativeMethods.GetMemoryStatus();
Log("System_AvailablePhysicalMemory", ToMegabytes(memInfo.ullAvailPhys));
Log("System_AvailableVirtualMemory", ToMegabytes(memInfo.ullAvailVirtual));
}
var processorSecondsUsed = curProcess.TotalProcessorTime.TotalSeconds;
if (_lastProcessorTimeUsage != 0)
{
var secondsPassed = (DateTime.UtcNow - _lastSentPeriodic).TotalSeconds;
var averageProcessorUsage = ((processorSecondsUsed - _lastProcessorTimeUsage) / secondsPassed) * 100;
Log("Client_PeriodProcessorUsage", averageProcessorUsage);
}
_lastProcessorTimeUsage = processorSecondsUsed;
}
catch (Exception exc)
{
Log(exc);
}
}