From 7ca647391ccd8ed74e727f12e9cbd8756a1cc889 Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Mon, 28 Oct 2019 13:27:33 -0700 Subject: [PATCH 01/11] Adding some initial EventCounters documentation --- documentation/eventcounters.md | 146 +++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 documentation/eventcounters.md diff --git a/documentation/eventcounters.md b/documentation/eventcounters.md new file mode 100644 index 0000000000..967291640a --- /dev/null +++ b/documentation/eventcounters.md @@ -0,0 +1,146 @@ +# EventCounters + +## Intro +EventCounters are lightweight, cross-platform, and near real-time EventCounters are .NET Core APIs that were added to replace the "performance counters" on the .NET Framework days. EventCounters are designed to be lightweight way of measuring quick. This doc serves as a guide on what they are, how they are implemented, how to use them, and how to consume them. + +EventCounters were initially added in .NET Core 2.2 (*CHECK THIS*) but they have been changed and extended starting in .NET Core 3.0. In addition to that, the .NET Core runtime (CoreCLR) and few .NET libraries have started publishing basic diagnostics information using EventCounters starting in .NET Core 3.0. + +This document serves to explain some of the concepts behind EventCounters, and how they can be consumed both in-proc and out-of-proc with some sample code. + + +## Conceptual Overview + + +## Adding your own EventCounters + +If you are writing a .NET application or library and want to keep track of some basic diagnostics information for yourself or your customers, you can easily define and add your own suite of counters. + +At a high level, there are two types of counters in terms of their *purpose* - counters for ever-increasing values (i.e. Total # of exceptions, Total # of GCs, Total # of requests, etc.) and "snapshot" values (heap usage, CPU usage, working set size, etc.). Within each of these categories of counters, there are also two types of counters for implementation details - polling counters and non-polling counters. That gives us a total of 4 different counters, and each of these can be implemented by `EventCounter`, `PollingCounter`, `IncrementingEventCounter`, and `IncrementingPollingCounter`. + +First, `EventCounter` and `IncrementingEventCounter` capture metrics of different characteristics. `EventCounter` is meant to capture data that are more suitable as snapshot. For example, the total number of requests received for a web service can be captured by calling `EventCounter.WriteMetric(1)` every time a request is received. However, the value reported would look like: + +``` +"Name": "total-requests", +"Min": "1", +"Max": "1", +"Mean": "1", +"StandardDeviation": "0", +"Count": "25", +/* some more fields */ +``` + + +## Consuming EventCounters + +There are two main ways of consuming EventCounters: in-proc and out-of-proc. + +### Consuming in-proc + +You can consume the counter values via the `EventListener` API. `EventListener` is an in-proc way of consuming any Events written by all instances of EventSources in your application. For more details on how to use the EventListener API, visit https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventlistener. + +First, the EventSource that produces the counter value needs to be enabled. To do this, you can override the `OnEventSourceCreated` method to get a notification when an EventSource is created, and if this is the correct EventSource with your EventCounters, then you can call Enable on it. Here is an example of such override: + +```cs +protected override void OnEventSourceCreated(EventSource source) +{ + if (source.Name.Equals("System.Runtime")) + { + Dictionary refreshInterval = new Dictionary(); + refreshInterval.Add("EventCounterIntervalSec", "1"); + EnableEvents(source, 1, 1, refreshInterval); + } +} +``` + +#### Sample Code + +This is a sample `EventListener` class that simply prints out all the counter names and values from a specified EventSource at some interval. + +```cs +public class SimpleEventListener : EventListener +{ + private readonly EventLevel _level = EventLevel.Verbose; + + public int EventCount { get; private set; } = 0; + + private string _counterSource; + private int _intervalSec; + + public SimpleEventListener(string counterSource, int intervalSec) + { + _counterSource = counterSource; + _intervalSec = intervalSec; + } + + + protected override void OnEventSourceCreated(EventSource source) + { + if (source.Name.Equals(counterSource)) + { + Dictionary refreshInterval = new Dictionary() + { + { "EventCounterIntervalSec", _intervalSec.ToString() } + }; + EnableEvents(source, _level, (EventKeywords)(-1), refreshInterval); + } + } + + private (string Name, string Value) getRelevantMetric(IDictionary eventPayload) + { + string counterName = ""; + string counterMean = ""; + string counterIncrement = ""; + bool isIncrement = false; + + foreach ( KeyValuePair payload in eventPayload ) + { + string key = payload.Key; + string val = payload.Value.ToString(); + + if (key.Equals("Name")) + { + counterName = val; + } + else if (key.Equals("Mean")) + { + counterMean = val; + } + else if (key.Equals("Increment")) + { + counterIncrement = val; + isIncrement = true; + } + } + + if (isIncrement) + { + return (counterName, counterIncrement); + } + else + { + return (counterName, counterMean); + } + } + + protected override void OnEventWritten(EventWrittenEventArgs eventData) + { + for (int i = 0; i < eventData.Payload.Count; i++) + { + IDictionary eventPayload = eventData.Payload[i] as IDictionary; + + if (eventPayload != null) + { + var counterKV = getRelevantMetric(eventPayload); + Console.WriteLine($"{counterKV.Name} : {counterKV.Value}"); + } + } + } +} +``` + +As shown above, you *must* make sure the `"EventCounterIntervalSec"` argument is set in the filterPayload argument when calling `EnableEvents`. Otherwise the counters will not be able to flush out values since it doesn't know at which interval it should be getting flushed out. + +### Consuming out-of-proc + +Consuming EventCounters out-of-proc is also possible. For those that are familiar with ETW (Event Tracing for Windows), you can use ETW to capture counter data as events and view them on your ETW trace viewer (PerfView, WPA, etc.). You may also use `dotnet-counters` to consume it cross-platform via EventPipe. + From e7f5efb8cd5fb4389d597bd9700f90ad9a5abfa1 Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Thu, 7 Nov 2019 14:47:09 -0800 Subject: [PATCH 02/11] Add more stuff about incrementingeventcounter --- documentation/eventcounters.md | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/documentation/eventcounters.md b/documentation/eventcounters.md index 967291640a..4e5f27b3de 100644 --- a/documentation/eventcounters.md +++ b/documentation/eventcounters.md @@ -5,11 +5,13 @@ EventCounters are lightweight, cross-platform, and near real-time EventCounters EventCounters were initially added in .NET Core 2.2 (*CHECK THIS*) but they have been changed and extended starting in .NET Core 3.0. In addition to that, the .NET Core runtime (CoreCLR) and few .NET libraries have started publishing basic diagnostics information using EventCounters starting in .NET Core 3.0. -This document serves to explain some of the concepts behind EventCounters, and how they can be consumed both in-proc and out-of-proc with some sample code. +This document serves to explain some of the concepts and design choices behind EventCounters API, how to use them, and how they can be consumed both in-proc and out-of-proc with some sample code. ## Conceptual Overview +Conceptually, EventCounters collect numeric values over time, and report them. The .NET Core runtime (CoreCLR) has several EventCounters, which collect and publish basic performance metrics related to CPU usage, memory usage, GC heap statistics, threads and locks statistics, etc. These serve as a basic performance guideline that can be easily consumed at a relatively cheap cost (that is, turning them on does not cause performance regression, so they can be used in production scenarios). +Apart from the EventCounters that are already provided by the .NET runtime or the rest of the framework (i.e. ASP.NET, gRPC, etc.), you may choose to implement your own EventCounters to keep track of various metrics for your service. ## Adding your own EventCounters @@ -29,6 +31,17 @@ First, `EventCounter` and `IncrementingEventCounter` capture metrics of differen /* some more fields */ ``` +This is not very useful - we have to do an additional computation of multiplying the count by the mean to find out how many requests were received in during the second, not to mention the meaninglessness of "standard deviation", "min", and "max", since we are just logging "1" every time we receive a request. + +An `IncrementingEventCounter` is a type of EventCounter that is designed to capture such metrics that are ever-increasing. `IncrementingEventCounter` reports the total increment over the period of time it reports value. For example, if the value was incremented by 50 over the past second, it will report `50` as its payload, so that no additional computation is needed on the consumption side. The payload of an `IncrementingEventCounter` looks like: + +``` + +``` + +Note that `IncrementingEventCounter` does not capture the total count over the lifetime of the process. (i.e. how many requests has been served since the process started). It only reports the *difference* over the period of the time it reports value. When monitoring performance, it is not very interesting to see the aggregate metric over the process' lifetime, since that does not provide any insights about the performance. For example, the total number of exceptions thrown since the process started does not indicate anything about the process' state. The actual interesting metric is the *rate* of the exception. (i.e. A process throwing 100 exceptions per second and has been running for 10 seconds is probably at a worse state than a process that throws 1 exception per hour and has been running for 5000 hours, even though the *total* exceptions is 1000 for the former and 5000 for the latter.) + + ## Consuming EventCounters @@ -45,16 +58,18 @@ protected override void OnEventSourceCreated(EventSource source) { if (source.Name.Equals("System.Runtime")) { - Dictionary refreshInterval = new Dictionary(); - refreshInterval.Add("EventCounterIntervalSec", "1"); + Dictionary refreshInterval = new Dictionary() + { + { "EventCounterIntervalSec", "1" } + }; EnableEvents(source, 1, 1, refreshInterval); } } ``` -#### Sample Code +### Sample Code -This is a sample `EventListener` class that simply prints out all the counter names and values from a specified EventSource at some interval. +This is a sample `EventListener` class that simply prints out all the counter names and values from a the .NET runtime's EventSource for publishing its internal counters (`System.Runtime`) at some interval. ```cs public class SimpleEventListener : EventListener @@ -63,19 +78,17 @@ public class SimpleEventListener : EventListener public int EventCount { get; private set; } = 0; - private string _counterSource; private int _intervalSec; - public SimpleEventListener(string counterSource, int intervalSec) + public SimpleEventListener(int intervalSec) { - _counterSource = counterSource; _intervalSec = intervalSec; } protected override void OnEventSourceCreated(EventSource source) { - if (source.Name.Equals(counterSource)) + if (source.Name.Equals("System.Runtime")) { Dictionary refreshInterval = new Dictionary() { From a6b6e837f22076816700304b3089e5c755614978 Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Thu, 7 Nov 2019 17:45:28 -0800 Subject: [PATCH 03/11] Add pictures --- documentation/design-docs/EventCounters.jpg | Bin 0 -> 111940 bytes .../{ => design-docs}/eventcounters.md | 43 +++++++++++++++--- 2 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 documentation/design-docs/EventCounters.jpg rename documentation/{ => design-docs}/eventcounters.md (67%) diff --git a/documentation/design-docs/EventCounters.jpg b/documentation/design-docs/EventCounters.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e10e6bb45b3b8bab38467b86fdc3efb8a364b3dd GIT binary patch literal 111940 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 ag3e#er+zD9r=GQAkk$2 literal 0 HcmV?d00001 diff --git a/documentation/eventcounters.md b/documentation/design-docs/eventcounters.md similarity index 67% rename from documentation/eventcounters.md rename to documentation/design-docs/eventcounters.md index 4e5f27b3de..f5a2d519d3 100644 --- a/documentation/eventcounters.md +++ b/documentation/design-docs/eventcounters.md @@ -1,6 +1,6 @@ # EventCounters -## Intro +## Introduction EventCounters are lightweight, cross-platform, and near real-time EventCounters are .NET Core APIs that were added to replace the "performance counters" on the .NET Framework days. EventCounters are designed to be lightweight way of measuring quick. This doc serves as a guide on what they are, how they are implemented, how to use them, and how to consume them. EventCounters were initially added in .NET Core 2.2 (*CHECK THIS*) but they have been changed and extended starting in .NET Core 3.0. In addition to that, the .NET Core runtime (CoreCLR) and few .NET libraries have started publishing basic diagnostics information using EventCounters starting in .NET Core 3.0. @@ -9,17 +9,19 @@ This document serves to explain some of the concepts and design choices behind E ## Conceptual Overview -Conceptually, EventCounters collect numeric values over time, and report them. The .NET Core runtime (CoreCLR) has several EventCounters, which collect and publish basic performance metrics related to CPU usage, memory usage, GC heap statistics, threads and locks statistics, etc. These serve as a basic performance guideline that can be easily consumed at a relatively cheap cost (that is, turning them on does not cause performance regression, so they can be used in production scenarios). +EventCounters collect numeric values over some time, and report them. The .NET Core runtime (CoreCLR) has several EventCounters, which collect and publish basic performance metrics related to CPU usage, memory usage, GC heap statistics, threads and locks statistics, etc. These serve as a basic performance guideline that can be easily consumed at a relatively cheap cost (that is, turning them on does not cause performance regression, so they can be used in production scenarios). Apart from the EventCounters that are already provided by the .NET runtime or the rest of the framework (i.e. ASP.NET, gRPC, etc.), you may choose to implement your own EventCounters to keep track of various metrics for your service. -## Adding your own EventCounters +EventCounters live as a part of an [EventSource](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventsource?view=netcore-3.0). Like any other events on an `EventSource`, they can be consumed both in-proc and out-of-proc via [EventListener](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventlistener?view=netcore-3.0) and EventPipe/ETW. -If you are writing a .NET application or library and want to keep track of some basic diagnostics information for yourself or your customers, you can easily define and add your own suite of counters. +![EventCounter](EventCounters.jpg) +## EventCounters API Overview At a high level, there are two types of counters in terms of their *purpose* - counters for ever-increasing values (i.e. Total # of exceptions, Total # of GCs, Total # of requests, etc.) and "snapshot" values (heap usage, CPU usage, working set size, etc.). Within each of these categories of counters, there are also two types of counters for implementation details - polling counters and non-polling counters. That gives us a total of 4 different counters, and each of these can be implemented by `EventCounter`, `PollingCounter`, `IncrementingEventCounter`, and `IncrementingPollingCounter`. -First, `EventCounter` and `IncrementingEventCounter` capture metrics of different characteristics. `EventCounter` is meant to capture data that are more suitable as snapshot. For example, the total number of requests received for a web service can be captured by calling `EventCounter.WriteMetric(1)` every time a request is received. However, the value reported would look like: +### EventCounter vs IncrementingEventCounter +`EventCounter` and `IncrementingEventCounter` capture metrics of different characteristics. `EventCounter` is meant to capture data that are more suitable as snapshot. For example, the total number of requests received for a web service can be captured by calling `EventCounter.WriteMetric(1)` every time a request is received. However, the value reported would look like: ``` "Name": "total-requests", @@ -28,6 +30,7 @@ First, `EventCounter` and `IncrementingEventCounter` capture metrics of differen "Mean": "1", "StandardDeviation": "0", "Count": "25", +"CounterType": "Mean", /* some more fields */ ``` @@ -36,13 +39,41 @@ This is not very useful - we have to do an additional computation of multiplying An `IncrementingEventCounter` is a type of EventCounter that is designed to capture such metrics that are ever-increasing. `IncrementingEventCounter` reports the total increment over the period of time it reports value. For example, if the value was incremented by 50 over the past second, it will report `50` as its payload, so that no additional computation is needed on the consumption side. The payload of an `IncrementingEventCounter` looks like: ``` - +"Name": "total-requests", +"DisplayName": "Total Requests", +"Increment": "25.0", +"CounterType": "Sum", +/* some more fields */ ``` +Most notable difference is that there is only `Increment`, and the statistical data such as `Min`, `Max`, `Mean`, and `StandardDeviation` no longer makes sense to be reported, so they don't exist. The `CounterType` is also reported as `Sum`, which is different from `EventCounter` payloads, which report it as `Mean`. + Note that `IncrementingEventCounter` does not capture the total count over the lifetime of the process. (i.e. how many requests has been served since the process started). It only reports the *difference* over the period of the time it reports value. When monitoring performance, it is not very interesting to see the aggregate metric over the process' lifetime, since that does not provide any insights about the performance. For example, the total number of exceptions thrown since the process started does not indicate anything about the process' state. The actual interesting metric is the *rate* of the exception. (i.e. A process throwing 100 exceptions per second and has been running for 10 seconds is probably at a worse state than a process that throws 1 exception per hour and has been running for 5000 hours, even though the *total* exceptions is 1000 for the former and 5000 for the latter.) +### EventCounter vs PollingCounter +Both `EventCounter` and `PollingCounter` capture similar type of metrics. They are suitable for capturing "data at the moment". The main difference between `EventCounter` and `PollingCounter` is how the value is collected. When you write an `EventCounter`, you *push* the values to it at any point in time. On the contrary, `PollingCounter`s take the `pull` model, where it regularly polls a certain value at the interval it has to report values for. `PollingCounter` takes in a delegate as a parameter in its constructor, which it invokes once per the update interval specified. For example, if you pass in `GC.GetTotalMemory(false)` to its constructor, and subscribe to it by setting its update interval as once per second, it will call `GC.GetTotalMemory(false)` once every second and report that value. The payload reported by `PollingCounter` is identical to `EventCounter`. + +One advantage of using `PollingCounter` over `EventCounter` is that you don't have to explicitly call `WriteMetric` on it, providing more flexibility. A disadvantage may be that there is an additional state to maintain in the app that needs to be polled by `PollingCounter`. + +Similar to how `PollingCounter` is a pull model for `EventCounter`, `IncrementingPollingCounter` is a pull model for `IncrementingEventCounter`. +## Writing EventCounters + +Let's begin by looking at a couple of sample EventCounter implementation in the .NET Core runtime (CoreCLR). Here is the runtime implementation for the rate of exceptions thrown: + +```cs + IncrementingPollingCounter exceptionCounter = new IncrementingPollingCounter( + "exception-count", + this, + () => Exception.GetExceptionCount() + ) + { + DisplayName = "Exception Count", + DisplayRateTimeScale = new TimeSpan(0, 0, 1) + }; +``` + ## Consuming EventCounters There are two main ways of consuming EventCounters: in-proc and out-of-proc. From 3aa1f89684528f5afc0e721bad1b2a32c6a0db9d Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Thu, 7 Nov 2019 18:03:52 -0800 Subject: [PATCH 04/11] Add more description about how to write your own counter --- documentation/design-docs/eventcounters.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/documentation/design-docs/eventcounters.md b/documentation/design-docs/eventcounters.md index f5a2d519d3..6c24ed19be 100644 --- a/documentation/design-docs/eventcounters.md +++ b/documentation/design-docs/eventcounters.md @@ -63,17 +63,21 @@ Similar to how `PollingCounter` is a pull model for `EventCounter`, `Incrementin Let's begin by looking at a couple of sample EventCounter implementation in the .NET Core runtime (CoreCLR). Here is the runtime implementation for the rate of exceptions thrown: ```cs - IncrementingPollingCounter exceptionCounter = new IncrementingPollingCounter( - "exception-count", - this, - () => Exception.GetExceptionCount() - ) - { - DisplayName = "Exception Count", - DisplayRateTimeScale = new TimeSpan(0, 0, 1) - }; +PollingCounter workingSetCounter = new PollingCounter( + "working-set", + this, + () => (double)(Environment.WorkingSet / 1_000_000) +) +{ + DisplayName = "Working Set", + DisplayUnits = "MB" +}; ``` +This counter reports the current working set of the app. It is a `PollingCounter`, since it captures a metric at a moment in time. The callback for polling the values is `() => (double)(Environment.WorkingSet / 1_000_000)` which is simply just a call to `Environment.WorkingSet` API. The `DisplayName` and `DisplayUnits` is an optional property that can be set to help the consumer side of the counter to display the value more easily/accurately. For example `dotnet-counters` uses these properties to display the more "pretty" version of the counter names. + +And that's it! For `PollingCounter` (or `IncrementingPollingCounter`), there is nothing else that needs to be done since they poll the values themselves at the interval requested by the consumer. + ## Consuming EventCounters There are two main ways of consuming EventCounters: in-proc and out-of-proc. From 1a82d486f485d7b1f6cdfa40f0aae5e517eabf8d Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Fri, 8 Nov 2019 14:59:51 -0800 Subject: [PATCH 05/11] Add out-of-proc consumption, more samples --- documentation/design-docs/eventcounters.md | 75 +++++++++++++++++++++- 1 file changed, 73 insertions(+), 2 deletions(-) diff --git a/documentation/design-docs/eventcounters.md b/documentation/design-docs/eventcounters.md index 6c24ed19be..e89daf3049 100644 --- a/documentation/design-docs/eventcounters.md +++ b/documentation/design-docs/eventcounters.md @@ -46,7 +46,7 @@ An `IncrementingEventCounter` is a type of EventCounter that is designed to capt /* some more fields */ ``` -Most notable difference is that there is only `Increment`, and the statistical data such as `Min`, `Max`, `Mean`, and `StandardDeviation` no longer makes sense to be reported, so they don't exist. The `CounterType` is also reported as `Sum`, which is different from `EventCounter` payloads, which report it as `Mean`. +Most notable difference is that there is only `Increment`, and the statistical data such as `Min`, `Max`, `Mean`, and `StandardDeviation` no longer makes sense to be reported, so they don't exist. The `CounterType` is also reported as `Sum`, which is different from `EventCounter` payloads, which report it as `Mean`. An easy way determine whether a counter should be an `IncrementingEventCounter` over `EventCounter` is whether it represents a type of `rate`. If the metric being reported is a type of `rate`, it makes more sense for it to be implemented using `IncrementingEventCounter`. Note that `IncrementingEventCounter` does not capture the total count over the lifetime of the process. (i.e. how many requests has been served since the process started). It only reports the *difference* over the period of the time it reports value. When monitoring performance, it is not very interesting to see the aggregate metric over the process' lifetime, since that does not provide any insights about the performance. For example, the total number of exceptions thrown since the process started does not indicate anything about the process' state. The actual interesting metric is the *rate* of the exception. (i.e. A process throwing 100 exceptions per second and has been running for 10 seconds is probably at a worse state than a process that throws 1 exception per hour and has been running for 5000 hours, even though the *total* exceptions is 1000 for the former and 5000 for the latter.) @@ -78,6 +78,52 @@ This counter reports the current working set of the app. It is a `PollingCounter And that's it! For `PollingCounter` (or `IncrementingPollingCounter`), there is nothing else that needs to be done since they poll the values themselves at the interval requested by the consumer. +Here is another example of runtime counter implemented using `IncrementingPollingCounter`. + +```cs +IncrementingPollingCounter monitorContentionCounter = new IncrementingPollingCounter( + "monitor-lock-contention-count", + this, + () => Monitor.LockContentionCount +) +{ + DisplayName = "Monitor Lock Contention Count", + DisplayRateTimeScale = new TimeSpan(0, 0, 1) +}; +``` + +This counter uses the [Monitor.LockContentionCount](https://docs.microsoft.com/en-us/dotnet/api/system.threading.monitor.lockcontentioncount?view=netcore-3.0) API to report the increment of the total lock contention count. The `DisplayRateTimeScale` property is an optional `TimeSpan` which can be set to provide a hint of what time interval this counter is best displayed at. For example, the lock contention count is best displayed as *count per second*, so its `DisplayRateTimeScale` is set to 1 second. This can be adjusted for different types of rate counters. + +There are more runtime counter implementation to use as a reference in the [CoreCLR](https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/src/System/Diagnostics/Eventing/RuntimeEventSource.cs) repo. + +Here is a sample code for a full `EventSource` implementation that uses `EventCounter`: +``` +// Give your event sources a descriptive name using the EventSourceAttribute, otherwise the name of the class is used. +[EventSource(Name = "Samples-EventCounterDemos-Minimal")] +public sealed class MinimalEventCounterSource : EventSource +{ + // define the singleton instance of the event source + public static MinimalEventCounterSource Log = new MinimalEventCounterSource(); + private EventCounter requestCounter; + + private MinimalEventCounterSource() : base(EventSourceSettings.EtwSelfDescribingEventFormat) + { + this.requestCounter = new EventCounter("request", this); + } + + /// + /// Call this method to indicate that a request for a URL was made which took a particular amount of time + public void Request(string url, float elapsedMSec) + { + // Notes: + // 1. Each counter supports a single float value, so conceptually it maps to a single + // measurement in the code. + this.requestCounter.WriteMetric(elapsedMSec); // This adds it to the called 'Request' if PerfCounters are on + } +} +``` + + ## Consuming EventCounters There are two main ways of consuming EventCounters: in-proc and out-of-proc. @@ -190,5 +236,30 @@ As shown above, you *must* make sure the `"EventCounterIntervalSec"` argument is ### Consuming out-of-proc -Consuming EventCounters out-of-proc is also possible. For those that are familiar with ETW (Event Tracing for Windows), you can use ETW to capture counter data as events and view them on your ETW trace viewer (PerfView, WPA, etc.). You may also use `dotnet-counters` to consume it cross-platform via EventPipe. +Consuming EventCounters out-of-proc is also possible. For those that are familiar with ETW (Event Tracing for Windows), you can use ETW to capture counter data as events and view them on your ETW trace viewer (PerfView, WPA, etc.). You may also use `dotnet-counters` to consume it cross-platform via EventPipe. + +#### dotnet-counters + +dotnet-counters is a cross-platform dotnet CLI tool that can be used to monitor the counter values. To find out how to use `dotnet-counters` to monitor your counters, refer to the [dotnet-counters documentation](https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-counters-instructions.md). + + +#### ETW/PerfView + +Since EventCounter payloads are reported as `EventSource` events, you can use PerfView to collect/view these counter-data. + +Here is a command that can be passed to PerfView to collect an ETW trace with the counters. +``` +PerfView.exe /onlyProviders=*Samples-EventCounterDemos-Minimal:EventCounterIntervalSec=1 collect +``` + + +#### dotnet-trace + +Similar to how PerfView can be used to consume the counter data through ETW, dotnet-trace can be used to consume the counter data through EventPipe. + +Here is an example of using dotnet-trace to get the same counter data. +``` +dotnet-trace collect --process-id --providers Samples-EventCounterDemos-Minimal:0:0:EventCounterIntervalSec=1 +``` +The official dotnet-trace documentation contains a [section](https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-trace-instructions.md#using-dotnet-trace-to-collect-counter-values-over-time) on how to do this in more detail. From 76b9f2eb17492ae5c30cf4fd49e147f7d515d7c6 Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Fri, 8 Nov 2019 15:00:59 -0800 Subject: [PATCH 06/11] formatting --- documentation/design-docs/eventcounters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/design-docs/eventcounters.md b/documentation/design-docs/eventcounters.md index e89daf3049..b733a208eb 100644 --- a/documentation/design-docs/eventcounters.md +++ b/documentation/design-docs/eventcounters.md @@ -148,7 +148,7 @@ protected override void OnEventSourceCreated(EventSource source) } ``` -### Sample Code +#### Sample Code This is a sample `EventListener` class that simply prints out all the counter names and values from a the .NET runtime's EventSource for publishing its internal counters (`System.Runtime`) at some interval. From ebe3b1ef3825d57bc19a5f552bfadfe0cd29bac5 Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Fri, 8 Nov 2019 15:02:09 -0800 Subject: [PATCH 07/11] more formatting --- documentation/design-docs/eventcounters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/design-docs/eventcounters.md b/documentation/design-docs/eventcounters.md index b733a208eb..e7df88feab 100644 --- a/documentation/design-docs/eventcounters.md +++ b/documentation/design-docs/eventcounters.md @@ -130,7 +130,7 @@ There are two main ways of consuming EventCounters: in-proc and out-of-proc. ### Consuming in-proc -You can consume the counter values via the `EventListener` API. `EventListener` is an in-proc way of consuming any Events written by all instances of EventSources in your application. For more details on how to use the EventListener API, visit https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventlistener. +You can consume the counter values via the `EventListener` API. `EventListener` is an in-proc way of consuming any Events written by all instances of EventSources in your application. For more details on how to use the EventListener API, refer to the [EventListener documentation](https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.tracing.eventlistener). First, the EventSource that produces the counter value needs to be enabled. To do this, you can override the `OnEventSourceCreated` method to get a notification when an EventSource is created, and if this is the correct EventSource with your EventCounters, then you can call Enable on it. Here is an example of such override: From 4381bf81c2ded2e8ccd86812a2ea1f7115d4befa Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Fri, 8 Nov 2019 15:14:38 -0800 Subject: [PATCH 08/11] Add section about concurrency --- documentation/design-docs/eventcounters.md | 53 +++++++++++++++++++--- 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/documentation/design-docs/eventcounters.md b/documentation/design-docs/eventcounters.md index e7df88feab..efbbff0d0d 100644 --- a/documentation/design-docs/eventcounters.md +++ b/documentation/design-docs/eventcounters.md @@ -104,25 +104,66 @@ public sealed class MinimalEventCounterSource : EventSource { // define the singleton instance of the event source public static MinimalEventCounterSource Log = new MinimalEventCounterSource(); - private EventCounter requestCounter; + private EventCounter requestTimeCounter; private MinimalEventCounterSource() : base(EventSourceSettings.EtwSelfDescribingEventFormat) { - this.requestCounter = new EventCounter("request", this); + this.requestTimeCounter = new EventCounter("request-time", this) + { + DisplayName = "Request Processing Time", + DisplayUnit = "MSec" + } } /// /// Call this method to indicate that a request for a URL was made which took a particular amount of time public void Request(string url, float elapsedMSec) { - // Notes: - // 1. Each counter supports a single float value, so conceptually it maps to a single - // measurement in the code. - this.requestCounter.WriteMetric(elapsedMSec); // This adds it to the called 'Request' if PerfCounters are on + this.requestTimeCounter.WriteMetric(elapsedMSec); } } ``` +## Concurrency +It is important to note that the EventCounters API does not guarantee any sort of thread safety. It is the author's responsibility to guarantee the thread-safety of the data being passed to the counter APIs. + +Suppose we have the following `EventSource` which keeps track of requests. + +``` +public class RequestEventSource : EventSource +{ + // singleton instance of the eventsource. + public static RequestEventSource Log = new RequestEventSource(); + + public IncrementingEventCounter requestRateCounter; + private int _requestCnt; + + private RequestEventSource() : base(EventSourceSettings.EtwSelfDescribingEventFormat) + { + requestCnt = 0; + this.requestRateCounter = new IncrementingPollingCounter("request-rate", this, () => _requestCnt) + { + DisplayName = "Request Rate", + DisplayRateTimeScale = TimeSpan.FromSeconds(1); + } + } + + // Method being called from request handlers to log that a request happened + public void Request() + { + requestCnt += 1; + } +``` + +`RequestEventSource.Request()` can be called from a request handler, and `requestRateCounter` simply polls this value at the interval specified by the consumer of this counter. However, this method can be called by multiple threads at once, so `requestCnt` can be susceptible to race. + +Therefore, this method should be modified to the following to prevent the race. +``` +public void Request() +{ + Interlocked.Increment(ref _requestCnt); +} +``` ## Consuming EventCounters From 422dab2390275f005a25a4ef5e73a2636afd55f5 Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Fri, 8 Nov 2019 15:21:17 -0800 Subject: [PATCH 09/11] cleanup, formatting --- documentation/design-docs/eventcounters.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/documentation/design-docs/eventcounters.md b/documentation/design-docs/eventcounters.md index efbbff0d0d..506bd70321 100644 --- a/documentation/design-docs/eventcounters.md +++ b/documentation/design-docs/eventcounters.md @@ -1,15 +1,15 @@ # EventCounters ## Introduction -EventCounters are lightweight, cross-platform, and near real-time EventCounters are .NET Core APIs that were added to replace the "performance counters" on the .NET Framework days. EventCounters are designed to be lightweight way of measuring quick. This doc serves as a guide on what they are, how they are implemented, how to use them, and how to consume them. +EventCounters are .NET Core APIs used for lightweight, cross-platform, and near real-time performance metric collection. EventCounters that were added to replace the "performance counters" on the .NET Framework. This documentation serves as a guide on what they are, how they are implemented, how to use them, and how to consume them. -EventCounters were initially added in .NET Core 2.2 (*CHECK THIS*) but they have been changed and extended starting in .NET Core 3.0. In addition to that, the .NET Core runtime (CoreCLR) and few .NET libraries have started publishing basic diagnostics information using EventCounters starting in .NET Core 3.0. +EventCounters have existed for a while (and is actually supported in .NET Framework as well) but the API has been extended starting in .NET Core 3.0. In addition to that, the .NET Core runtime (CoreCLR) and few .NET libraries have started publishing basic diagnostics information using EventCounters starting in .NET Core 3.0. This document is written targetting versions of .NET Core 3.0 or later. This document serves to explain some of the concepts and design choices behind EventCounters API, how to use them, and how they can be consumed both in-proc and out-of-proc with some sample code. ## Conceptual Overview -EventCounters collect numeric values over some time, and report them. The .NET Core runtime (CoreCLR) has several EventCounters, which collect and publish basic performance metrics related to CPU usage, memory usage, GC heap statistics, threads and locks statistics, etc. These serve as a basic performance guideline that can be easily consumed at a relatively cheap cost (that is, turning them on does not cause performance regression, so they can be used in production scenarios). +EventCounters collect numeric values over some time and report them. The .NET Core runtime (CoreCLR) has several EventCounters, which collect and publish basic performance metrics related to CPU usage, memory usage, GC heap statistics, threads and locks statistics, etc. These serve as a basic performance guideline that can be easily consumed at a relatively cheap cost (that is, turning them on does not cause performance regression, so they can be used in production scenarios). Apart from the EventCounters that are already provided by the .NET runtime or the rest of the framework (i.e. ASP.NET, gRPC, etc.), you may choose to implement your own EventCounters to keep track of various metrics for your service. @@ -129,7 +129,7 @@ It is important to note that the EventCounters API does not guarantee any sort o Suppose we have the following `EventSource` which keeps track of requests. -``` +```cs public class RequestEventSource : EventSource { // singleton instance of the eventsource. @@ -158,7 +158,7 @@ public class RequestEventSource : EventSource `RequestEventSource.Request()` can be called from a request handler, and `requestRateCounter` simply polls this value at the interval specified by the consumer of this counter. However, this method can be called by multiple threads at once, so `requestCnt` can be susceptible to race. Therefore, this method should be modified to the following to prevent the race. -``` +```cs public void Request() { Interlocked.Increment(ref _requestCnt); From 2644ba0d1290bc5f1baf7a841bf3755103f812a4 Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Fri, 8 Nov 2019 15:39:04 -0800 Subject: [PATCH 10/11] format --- documentation/design-docs/eventcounters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/design-docs/eventcounters.md b/documentation/design-docs/eventcounters.md index 506bd70321..8eebc5603d 100644 --- a/documentation/design-docs/eventcounters.md +++ b/documentation/design-docs/eventcounters.md @@ -97,7 +97,7 @@ This counter uses the [Monitor.LockContentionCount](https://docs.microsoft.com/e There are more runtime counter implementation to use as a reference in the [CoreCLR](https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/src/System/Diagnostics/Eventing/RuntimeEventSource.cs) repo. Here is a sample code for a full `EventSource` implementation that uses `EventCounter`: -``` +```cs // Give your event sources a descriptive name using the EventSourceAttribute, otherwise the name of the class is used. [EventSource(Name = "Samples-EventCounterDemos-Minimal")] public sealed class MinimalEventCounterSource : EventSource From 0e1bfe75174c482b18a86cdbd79a234e39d6eaf8 Mon Sep 17 00:00:00 2001 From: Sung Yoon Whang Date: Tue, 26 Nov 2019 16:00:14 -0800 Subject: [PATCH 11/11] Address PR feedback --- documentation/design-docs/EventCounters.jpg | Bin 111940 -> 145629 bytes documentation/design-docs/eventcounters.md | 210 +++++++++++--------- 2 files changed, 115 insertions(+), 95 deletions(-) diff --git a/documentation/design-docs/EventCounters.jpg b/documentation/design-docs/EventCounters.jpg index e10e6bb45b3b8bab38467b86fdc3efb8a364b3dd..cd53df33b21ebcee0de8021ea3b9b4eeccae845a 100644 GIT binary patch literal 145629 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 AZ~y=R literal 111940 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 ag3e#er+zD9r=GQAkk$2 diff --git a/documentation/design-docs/eventcounters.md b/documentation/design-docs/eventcounters.md index 8eebc5603d..5ef0cd52d2 100644 --- a/documentation/design-docs/eventcounters.md +++ b/documentation/design-docs/eventcounters.md @@ -1,15 +1,9 @@ -# EventCounters +# EventCounters in .NET Core 3.0 ## Introduction -EventCounters are .NET Core APIs used for lightweight, cross-platform, and near real-time performance metric collection. EventCounters that were added to replace the "performance counters" on the .NET Framework. This documentation serves as a guide on what they are, how they are implemented, how to use them, and how to consume them. +EventCounters are .NET Core APIs used for lightweight, cross-platform, and near real-time performance metric collection. EventCounters that were added as a cross-platform alternative to the "performance counters" on the .NET Framework on Windows. This documentation serves as a guide on what they are, how to implement them, and how to consume them. -EventCounters have existed for a while (and is actually supported in .NET Framework as well) but the API has been extended starting in .NET Core 3.0. In addition to that, the .NET Core runtime (CoreCLR) and few .NET libraries have started publishing basic diagnostics information using EventCounters starting in .NET Core 3.0. This document is written targetting versions of .NET Core 3.0 or later. - -This document serves to explain some of the concepts and design choices behind EventCounters API, how to use them, and how they can be consumed both in-proc and out-of-proc with some sample code. - - -## Conceptual Overview -EventCounters collect numeric values over some time and report them. The .NET Core runtime (CoreCLR) has several EventCounters, which collect and publish basic performance metrics related to CPU usage, memory usage, GC heap statistics, threads and locks statistics, etc. These serve as a basic performance guideline that can be easily consumed at a relatively cheap cost (that is, turning them on does not cause performance regression, so they can be used in production scenarios). +The .NET Core runtime (CoreCLR) and few .NET libraries publish basic diagnostics information using EventCounters starting in .NET Core 3.0. Apart from the EventCounters that are already provided by the .NET runtime or the rest of the framework (i.e. ASP.NET, gRPC, etc.), you may choose to implement your own EventCounters to keep track of various metrics for your service. @@ -17,50 +11,110 @@ EventCounters live as a part of an [EventSource](https://docs.microsoft.com/en-u ![EventCounter](EventCounters.jpg) +## Runtime Counters +The .NET runtime (CoreCLR) publishes the following list of counters: +* CPU usage +* Working Set Size +* GC Heap Size +* Gen 0 GC Rate +* Gen 1 GC Rate +* Gen 2 GC Rate +* % Time in GC +* Gen 0 Heap Size +* Gen 1 Heap Size +* Gen 2 Heap Size +* LOH Heap Size +* Allocation Rate +* Assembly Count +* Exception Rate +* ThreadPool Thread Count +* Monitor Lock Contention Rate +* ThreadPool Queue Length +* ThreadPool Completed Items Rate +* Active Timer Count + +ASP.NET Core also publishes the following counters: +* Requests per second +* Total Requests Count +* Current Requests Count +* Failed Requests Count + ## EventCounters API Overview At a high level, there are two types of counters in terms of their *purpose* - counters for ever-increasing values (i.e. Total # of exceptions, Total # of GCs, Total # of requests, etc.) and "snapshot" values (heap usage, CPU usage, working set size, etc.). Within each of these categories of counters, there are also two types of counters for implementation details - polling counters and non-polling counters. That gives us a total of 4 different counters, and each of these can be implemented by `EventCounter`, `PollingCounter`, `IncrementingEventCounter`, and `IncrementingPollingCounter`. -### EventCounter vs IncrementingEventCounter -`EventCounter` and `IncrementingEventCounter` capture metrics of different characteristics. `EventCounter` is meant to capture data that are more suitable as snapshot. For example, the total number of requests received for a web service can be captured by calling `EventCounter.WriteMetric(1)` every time a request is received. However, the value reported would look like: +The runtime supports four different types of counters for different situations: -``` -"Name": "total-requests", -"Min": "1", -"Max": "1", -"Mean": "1", -"StandardDeviation": "0", -"Count": "25", -"CounterType": "Mean", -/* some more fields */ -``` +1. `EventCounter` records a set of values. The `WriteMetric()` method adds a new value to the set. At the end of each time interval, summary statistics for the set are computed such as the min, max, and mean. dotnet-counters will always display the mean value. EventCounter is useful to describe a discrete set of operations such as the average size in bytes of recent IO operations or the average monetary value of a set of financial transactions. -This is not very useful - we have to do an additional computation of multiplying the count by the mean to find out how many requests were received in during the second, not to mention the meaninglessness of "standard deviation", "min", and "max", since we are just logging "1" every time we receive a request. +2. `IncrementingEventCounter` records a running total. The `Increment()` method increases this total. At the end of each time period the total value is reported and then it is reset to zero. dotnet-counters will display this as a rate, the recorded total / time. This counter is useful to measure how frequently an action is occurring such as the number of requests processed each second. -An `IncrementingEventCounter` is a type of EventCounter that is designed to capture such metrics that are ever-increasing. `IncrementingEventCounter` reports the total increment over the period of time it reports value. For example, if the value was incremented by 50 over the past second, it will report `50` as its payload, so that no additional computation is needed on the consumption side. The payload of an `IncrementingEventCounter` looks like: +3. `PollingCounter` is a customizable counter that doesn't have any state and uses a callback to determine the value that is reported. At the end of each time interval the user provided callback function is invoked and whatever value it returns is reported as the current value of the counter. This counter can be used to query a metric from an external source, for example getting the current free bytes on a disk. It can also be used to report custom statistics that can be computed on demand by an application such as 95th percentile of recent request latencies or the current hit/miss ratio of a cache. -``` -"Name": "total-requests", -"DisplayName": "Total Requests", -"Increment": "25.0", -"CounterType": "Sum", -/* some more fields */ -``` +4. `IncrementingPollingCounter` is a customizable counter that has no state and uses a callback to determine the increment that is reported. At the end of each time interval the callback is invoked and then the difference between the current invocation and the last invocation is the reported value. `dotnet-counters` always displays this as a rate, the reported value / time. This is useful to measure the rate at which some action is occurring when it isn't feasible to call an API on each occurrence, but it is possible to query the total number of times it has occurred. For example you could report the number of bytes written to a file / sec even if there is no notification each time a byte is written. -Most notable difference is that there is only `Increment`, and the statistical data such as `Min`, `Max`, `Mean`, and `StandardDeviation` no longer makes sense to be reported, so they don't exist. The `CounterType` is also reported as `Sum`, which is different from `EventCounter` payloads, which report it as `Mean`. An easy way determine whether a counter should be an `IncrementingEventCounter` over `EventCounter` is whether it represents a type of `rate`. If the metric being reported is a type of `rate`, it makes more sense for it to be implemented using `IncrementingEventCounter`. -Note that `IncrementingEventCounter` does not capture the total count over the lifetime of the process. (i.e. how many requests has been served since the process started). It only reports the *difference* over the period of the time it reports value. When monitoring performance, it is not very interesting to see the aggregate metric over the process' lifetime, since that does not provide any insights about the performance. For example, the total number of exceptions thrown since the process started does not indicate anything about the process' state. The actual interesting metric is the *rate* of the exception. (i.e. A process throwing 100 exceptions per second and has been running for 10 seconds is probably at a worse state than a process that throws 1 exception per hour and has been running for 5000 hours, even though the *total* exceptions is 1000 for the former and 5000 for the latter.) -### EventCounter vs PollingCounter -Both `EventCounter` and `PollingCounter` capture similar type of metrics. They are suitable for capturing "data at the moment". The main difference between `EventCounter` and `PollingCounter` is how the value is collected. When you write an `EventCounter`, you *push* the values to it at any point in time. On the contrary, `PollingCounter`s take the `pull` model, where it regularly polls a certain value at the interval it has to report values for. `PollingCounter` takes in a delegate as a parameter in its constructor, which it invokes once per the update interval specified. For example, if you pass in `GC.GetTotalMemory(false)` to its constructor, and subscribe to it by setting its update interval as once per second, it will call `GC.GetTotalMemory(false)` once every second and report that value. The payload reported by `PollingCounter` is identical to `EventCounter`. +## Writing EventCounters -One advantage of using `PollingCounter` over `EventCounter` is that you don't have to explicitly call `WriteMetric` on it, providing more flexibility. A disadvantage may be that there is an additional state to maintain in the app that needs to be polled by `PollingCounter`. +Let's begin by looking at an implementation of sample `EventSource` that contains an `EventCounter`. +```cs -Similar to how `PollingCounter` is a pull model for `EventCounter`, `IncrementingPollingCounter` is a pull model for `IncrementingEventCounter`. +using System; +using System.Diagnostics.Tracing; +[EventSource(Name = "Samples-EventCounterDemos-Minimal")] +public sealed class MinimalEventCounterSource : EventSource +{ + // define the singleton instance of the event source + public static MinimalEventCounterSource Log = new MinimalEventCounterSource(); + public EventCounter RequestTimeCounter; -## Writing EventCounters + private MinimalEventCounterSource() : base(EventSourceSettings.EtwSelfDescribingEventFormat) + { + this.RequestTimeCounter = new EventCounter("request-time", this) + { + DisplayName = "Request Processing Time", + DisplayUnits = "MSec" + }; + } + + public static void Main() + { + var rand = new Random(); + while(true) + { + MinimalEventCounterSource.Log.RequestTimeCounter.WriteMetric(rand.NextDouble()); + } + } +} +``` + +Create a new dotnet console app using the code above and run it. Then use `dotnet-counters` to see what process-id this is: + +```cmd +E:\>dotnet-counters ps + 1398652 dotnet C:\Program Files\dotnet\dotnet.exe + 1399072 dotnet C:\Program Files\dotnet\dotnet.exe + 1399112 dotnet C:\Program Files\dotnet\dotnet.exe + 1401880 dotnet C:\Program Files\dotnet\dotnet.exe + 1400180 sample-counters E:\sample-counters\bin\Debug\netcoreapp3.1\sample-counters.exe +``` + +You can start monitoring your counter with the following command: +```cmd +E:\>dotnet-counters monitor --process-id 1400180 --providers Samples-EventCounterDemos-Minimal +``` + +Then you will see the following screen in your console: +``` +Press p to pause, r to resume, q to quit. + Status: Running + +[Samples-EventCounterDemos-Minimal] + Request Processing Time (MSec) 0.5 +``` -Let's begin by looking at a couple of sample EventCounter implementation in the .NET Core runtime (CoreCLR). Here is the runtime implementation for the rate of exceptions thrown: +Let's take a look at a couple of sample EventCounter implementation in the .NET Core runtime (CoreCLR). Here is the runtime implementation for the counter that tracks the working set size of the application. ```cs PollingCounter workingSetCounter = new PollingCounter( @@ -96,38 +150,10 @@ This counter uses the [Monitor.LockContentionCount](https://docs.microsoft.com/e There are more runtime counter implementation to use as a reference in the [CoreCLR](https://github.com/dotnet/coreclr/blob/master/src/System.Private.CoreLib/src/System/Diagnostics/Eventing/RuntimeEventSource.cs) repo. -Here is a sample code for a full `EventSource` implementation that uses `EventCounter`: -```cs -// Give your event sources a descriptive name using the EventSourceAttribute, otherwise the name of the class is used. -[EventSource(Name = "Samples-EventCounterDemos-Minimal")] -public sealed class MinimalEventCounterSource : EventSource -{ - // define the singleton instance of the event source - public static MinimalEventCounterSource Log = new MinimalEventCounterSource(); - private EventCounter requestTimeCounter; - - private MinimalEventCounterSource() : base(EventSourceSettings.EtwSelfDescribingEventFormat) - { - this.requestTimeCounter = new EventCounter("request-time", this) - { - DisplayName = "Request Processing Time", - DisplayUnit = "MSec" - } - } - - /// - /// Call this method to indicate that a request for a URL was made which took a particular amount of time - public void Request(string url, float elapsedMSec) - { - this.requestTimeCounter.WriteMetric(elapsedMSec); - } -} -``` - ## Concurrency -It is important to note that the EventCounters API does not guarantee any sort of thread safety. It is the author's responsibility to guarantee the thread-safety of the data being passed to the counter APIs. +It is important to note that if the delegates passed to the `PollingCounter`/`IncrementingPollingCounter` instances are called by multiple threads at once, the EventCounters API does not guarantee thread safety. It is the author's responsibility to guarantee the thread-safety of the delegates being passed to the counter APIs. -Suppose we have the following `EventSource` which keeps track of requests. +For example, suppose we have the following `EventSource` which keeps track of requests. ```cs public class RequestEventSource : EventSource @@ -153,6 +179,7 @@ public class RequestEventSource : EventSource { requestCnt += 1; } +} ``` `RequestEventSource.Request()` can be called from a request handler, and `requestRateCounter` simply polls this value at the interval specified by the consumer of this counter. However, this method can be called by multiple threads at once, so `requestCnt` can be susceptible to race. @@ -220,12 +247,10 @@ public class SimpleEventListener : EventListener } } - private (string Name, string Value) getRelevantMetric(IDictionary eventPayload) + private (string Name, string Value) GetRelevantMetric(IDictionary eventPayload) { string counterName = ""; - string counterMean = ""; - string counterIncrement = ""; - bool isIncrement = false; + string counterValue = ""; foreach ( KeyValuePair payload in eventPayload ) { @@ -236,37 +261,27 @@ public class SimpleEventListener : EventListener { counterName = val; } - else if (key.Equals("Mean")) + else if (key.Equals("Mean") || key.Equals("Increment")) { - counterMean = val; - } - else if (key.Equals("Increment")) - { - counterIncrement = val; - isIncrement = true; + counterValue = val; } } - - if (isIncrement) - { - return (counterName, counterIncrement); - } - else - { - return (counterName, counterMean); - } + return (counterName, counterValue); } protected override void OnEventWritten(EventWrittenEventArgs eventData) { - for (int i = 0; i < eventData.Payload.Count; i++) + if (eventData.EventName.Equals("EventCounters")) { - IDictionary eventPayload = eventData.Payload[i] as IDictionary; - - if (eventPayload != null) + for (int i = 0; i < eventData.Payload.Count; i++) { - var counterKV = getRelevantMetric(eventPayload); - Console.WriteLine($"{counterKV.Name} : {counterKV.Value}"); + IDictionary eventPayload = eventData.Payload[i] as IDictionary; + + if (eventPayload != null) + { + var counterKV = GetRelevantMetric(eventPayload); + Console.WriteLine($"{counterKV.Name} : {counterKV.Value}"); + } } } } @@ -277,7 +292,7 @@ As shown above, you *must* make sure the `"EventCounterIntervalSec"` argument is ### Consuming out-of-proc -Consuming EventCounters out-of-proc is also possible. For those that are familiar with ETW (Event Tracing for Windows), you can use ETW to capture counter data as events and view them on your ETW trace viewer (PerfView, WPA, etc.). You may also use `dotnet-counters` to consume it cross-platform via EventPipe. +Consuming EventCounters out-of-proc is also possible. For those that are familiar with ETW (Event Tracing for Windows), you can use ETW to capture counter data as events and view them on your ETW trace viewer (PerfView, WPA, etc.). You may also use `dotnet-counters` to consume it cross-platform via EventPipe. You can also use TraceEvent to consume these. #### dotnet-counters @@ -304,3 +319,8 @@ dotnet-trace collect --process-id --providers Samples-EventCounterDemos-Mi ``` The official dotnet-trace documentation contains a [section](https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-trace-instructions.md#using-dotnet-trace-to-collect-counter-values-over-time) on how to do this in more detail. + + +#### TraceEvent + +TraceEvent is a managed library that makes it easy to consume ETW and EventPipe events. For more information, refer to the [TraceEvent Library Programmers Guide](https://github.com/Microsoft/perfview/blob/master/documentation/TraceEvent/TraceEventProgrammersGuide.md). \ No newline at end of file