public override async Task <ResponseMessage> SendAsync( RequestMessage request, CancellationToken cancellationToken) { ResponseMessage responseMessage = await base.SendAsync(request, cancellationToken); // Record the diagnostics on the response to get the CPU of when the request was executing SystemUsageHistory systemUsageHistory = DiagnosticsHandlerHelper.Instance.GetDiagnosticsSystemHistory(); if (systemUsageHistory != null) { request.Trace.AddDatum( "System Info", new CpuHistoryTraceDatum(systemUsageHistory)); } return(responseMessage); }
/// <summary> /// Record System Usage and update passed system Info collection. Right now, it collects following metrics /// 1) CPU Usage /// 2) Memory Remaining /// 3) Available Threads /// /// </summary> /// <param name="systemUsageHistory"></param> /// <param name="systemInfoCollection"></param> /// <param name="isDirectConnectionMode"></param> internal static void RecordSystemUsage( SystemUsageHistory systemUsageHistory, List <SystemInfo> systemInfoCollection, bool isDirectConnectionMode) { if (systemUsageHistory.Values == null) { return; } DefaultTrace.TraceInformation("System Usage recorded by telemetry is : {0}", systemUsageHistory); systemInfoCollection.Add(TelemetrySystemUsage.GetCpuInfo(systemUsageHistory.Values)); systemInfoCollection.Add(TelemetrySystemUsage.GetMemoryRemainingInfo(systemUsageHistory.Values)); systemInfoCollection.Add(TelemetrySystemUsage.GetAvailableThreadsInfo(systemUsageHistory.Values)); systemInfoCollection.Add(TelemetrySystemUsage.GetThreadWaitIntervalInMs(systemUsageHistory.Values)); systemInfoCollection.Add(TelemetrySystemUsage.GetThreadStarvationSignalCount(systemUsageHistory.Values)); if (isDirectConnectionMode) { systemInfoCollection.Add(TelemetrySystemUsage.GetTcpConnectionCount(systemUsageHistory.Values)); } }