internal void AgentInvokeEndHandler(object dispatcher, MExSession context) { MExCountersInstance instance = MExCounters.GetInstance(context.CurrentAgent.Name); long timestamp = Stopwatch.GetTimestamp(); instance.AverageAgentDelay.IncrementBy(timestamp - context.BeginInvokeTicks); instance.AverageAgentDelayBase.Increment(); instance.TotalAgentInvocations.Increment(); }
public MExPerfCounters(ProcessTransportRole processRole, AgentRecord[] agentRecords) { this.agentRecords = agentRecords; MExCounters.SetCategoryName(MExPerfCounters.GetPerformanceCounterCategory(processRole)); this.synchronousAgentProcessorUsageSlidingCounters = new SlidingAverageCounter[this.agentRecords.Length]; this.asynchronousAgentProcessorUsageSlidingCounters = new SlidingAverageCounter[this.agentRecords.Length]; for (int i = 0; i < this.agentRecords.Length; i++) { MExCounters.GetInstance(this.agentRecords[i].Name); this.synchronousAgentProcessorUsageSlidingCounters[this.agentRecords[i].SequenceNumber] = new SlidingAverageCounter(MExPerfCounters.slidingWindowLengthForAgentProcessorUsageCounters, MExPerfCounters.bucketLengthForAgentProcessorUsageCounters); this.asynchronousAgentProcessorUsageSlidingCounters[this.agentRecords[i].SequenceNumber] = new SlidingAverageCounter(MExPerfCounters.slidingWindowLengthForAgentProcessorUsageCounters, MExPerfCounters.bucketLengthForAgentProcessorUsageCounters); } }
internal void AgentInvokeReturnsHandler(object dispatcher, MExSession context) { MExCountersInstance instance = MExCounters.GetInstance(context.CurrentAgent.Name); if (context.IsAsyncAgent) { SlidingAverageCounter slidingAverageCounter = this.asynchronousAgentProcessorUsageSlidingCounters[context.CurrentAgent.SequenceNumber]; slidingAverageCounter.AddValue(context.TotalProcessorTime); long rawValue2; long rawValue = slidingAverageCounter.CalculateAverageAcrossAllSamples(out rawValue2); instance.AverageAgentProcessorUsageAsynchronousInvocations.RawValue = rawValue; instance.AsynchronousAgentInvocationSamples.RawValue = rawValue2; } else { SlidingAverageCounter slidingAverageCounter2 = this.synchronousAgentProcessorUsageSlidingCounters[context.CurrentAgent.SequenceNumber]; slidingAverageCounter2.AddValue(context.TotalProcessorTime); long rawValue4; long rawValue3 = slidingAverageCounter2.CalculateAverageAcrossAllSamples(out rawValue4); instance.AverageAgentProcessorUsageSynchronousInvocations.RawValue = rawValue3; instance.SynchronousAgentInvocationSamples.RawValue = rawValue4; } context.CleanupCpuTracker(); }