From c476f1bb3d62eedbce50a77cd72defe6817246fa Mon Sep 17 00:00:00 2001 From: Eduardo Manuel Velarde Polar Date: Fri, 10 Jun 2022 18:26:14 -0700 Subject: [PATCH 1/5] Add event ThreadPoolMinMaxThreads --- src/EtwClrProfiler/ETWClrProfilerX64.vcxproj | 6 +- src/EtwClrProfiler/ETWClrProfilerX86.vcxproj | 6 +- src/TraceEvent/Parsers/ClrTraceEventParser.cs | 94 ++++++++++++++++++- 3 files changed, 99 insertions(+), 7 deletions(-) diff --git a/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj b/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj index 837981fe8..449b01625 100644 --- a/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj +++ b/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj @@ -13,7 +13,7 @@ {E9980619-4016-4A4A-B7CC-F8B0E483BDB9} AtlProj - 10.0.17763.0 + 10.0 @@ -27,7 +27,7 @@ Unicode - v142 + v143 v142 @@ -120,4 +120,4 @@ - + \ No newline at end of file diff --git a/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj b/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj index 6843d0d50..0bb730e7e 100644 --- a/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj +++ b/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj @@ -13,7 +13,7 @@ {E9980619-4016-4A4A-B7CC-F8B0E483BDB8} AtlProj - 10.0.17763.0 + 10.0 @@ -27,7 +27,7 @@ Unicode - v142 + v143 v142 @@ -116,4 +116,4 @@ - + \ No newline at end of file diff --git a/src/TraceEvent/Parsers/ClrTraceEventParser.cs b/src/TraceEvent/Parsers/ClrTraceEventParser.cs index d0564d42a..b17fc24d2 100644 --- a/src/TraceEvent/Parsers/ClrTraceEventParser.cs +++ b/src/TraceEvent/Parsers/ClrTraceEventParser.cs @@ -982,6 +982,19 @@ public event Action YieldProcessorMeasuremen source.UnregisterEventTemplate(value, 0, YieldProcessorMeasurementTaskGuid); } } + public event Action ThreadPoolMinMaxThreads + { + add + { + // action, eventid, taskid, taskName, taskGuid, opcode, opcodeName, providerGuid, providerName + RegisterTemplate(new ThreadPoolMinMaxThreadsTraceData(value, 59, 38, "ThreadPoolMinMaxThreads", ThreadPoolMinMaxThreadsTaskGuid, 0, "Info", ProviderGuid, ProviderName)); + } + remove + { + source.UnregisterEventTemplate(value, 59, ProviderGuid); + source.UnregisterEventTemplate(value, 0, ThreadPoolMinMaxThreadsTaskGuid); + } + } public event Action ThreadPoolWorkingThreadCountStart { add @@ -2115,7 +2128,7 @@ protected internal override void EnumerateTemplates(Func Action; #endregion } + public sealed class ThreadPoolMinMaxThreadsTraceData : TraceEvent + { + public int MinWorkerThreads { get { return GetInt16At(0); } } + public int MaxWorkerThreads { get { return GetInt16At(2); } } + public int MinIOCompletionThreads { get { return GetInt16At(4); } } + public int MaxIOCompletionThreads { get { return GetInt16At(6); } } + public int ClrInstanceID { get { return GetInt16At(8); } } + + #region Private + internal ThreadPoolMinMaxThreadsTraceData(Action action, int eventID, int task, string taskName, Guid taskGuid, int opcode, string opcodeName, Guid providerGuid, string providerName) + : base(eventID, task, taskName, taskGuid, opcode, opcodeName, providerGuid, providerName) + { + Action = action; + } + protected internal override void Dispatch() + { + Action(this); + } + protected internal override Delegate Target + { + get { return Action; } + set { Action = (Action)value; } + } + protected internal override void Validate() + { + Debug.Assert(!(Version == 0 && EventDataLength != 10)); + Debug.Assert(!(Version > 0 && EventDataLength < 10)); + } + public override StringBuilder ToXml(StringBuilder sb) + { + Prefix(sb); + XmlAttrib(sb, "MinWorkerThreads", MinWorkerThreads); + XmlAttrib(sb, "MaxWorkerThreads", MaxWorkerThreads); + XmlAttrib(sb, "MinIOCompletionThreads", MinIOCompletionThreads); + XmlAttrib(sb, "MaxIOCompletionThreads", MaxIOCompletionThreads); + XmlAttrib(sb, "ClrInstanceID", ClrInstanceID); + sb.Append("/>"); + return sb; + } + + public override string[] PayloadNames + { + get + { + if (payloadNames == null) + { + payloadNames = new string[] { "MinWorkerThreads", "MaxWorkerThreads", "MinIOCompletionThreads", "MaxIOCompletionThreads", "ClrInstanceID"}; + } + + return payloadNames; + } + } + + public override object PayloadValue(int index) + { + switch (index) + { + case 0: + return MinWorkerThreads; + case 1: + return MaxWorkerThreads; + case 2: + return MinIOCompletionThreads; + case 3: + return MaxIOCompletionThreads; + case 4: + return ClrInstanceID; + default: + Debug.Assert(false, "Bad field index"); + return null; + } + } + + private event Action Action; + #endregion + } public sealed class ThreadPoolWorkerThreadAdjustmentSampleTraceData : TraceEvent { public double Throughput { get { return GetDoubleAt(0); } } From 9126236924ffe00e71f80b85075a4be5fe4024c2 Mon Sep 17 00:00:00 2001 From: Eduardo Manuel Velarde Polar Date: Tue, 14 Jun 2022 20:31:50 -0700 Subject: [PATCH 2/5] Delete changes from ETWClrProfilerX64.vcxproj and ETWClrProfilerX86.vcxproj --- src/EtwClrProfiler/ETWClrProfilerX64.vcxproj | 6 +++--- src/EtwClrProfiler/ETWClrProfilerX86.vcxproj | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj b/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj index 449b01625..837981fe8 100644 --- a/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj +++ b/src/EtwClrProfiler/ETWClrProfilerX64.vcxproj @@ -13,7 +13,7 @@ {E9980619-4016-4A4A-B7CC-F8B0E483BDB9} AtlProj - 10.0 + 10.0.17763.0 @@ -27,7 +27,7 @@ Unicode - v143 + v142 v142 @@ -120,4 +120,4 @@ - \ No newline at end of file + diff --git a/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj b/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj index 0bb730e7e..6843d0d50 100644 --- a/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj +++ b/src/EtwClrProfiler/ETWClrProfilerX86.vcxproj @@ -13,7 +13,7 @@ {E9980619-4016-4A4A-B7CC-F8B0E483BDB8} AtlProj - 10.0 + 10.0.17763.0 @@ -27,7 +27,7 @@ Unicode - v143 + v142 v142 @@ -116,4 +116,4 @@ - \ No newline at end of file + From 747066c02234f20610c9b31bcb65eeb6fadd9be0 Mon Sep 17 00:00:00 2001 From: Eduardo Manuel Velarde Polar Date: Tue, 14 Jun 2022 20:54:46 -0700 Subject: [PATCH 3/5] Use new style in template and match GUID with corresponding PR in runtime repo --- src/TraceEvent/Parsers/ClrTraceEventParser.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/TraceEvent/Parsers/ClrTraceEventParser.cs b/src/TraceEvent/Parsers/ClrTraceEventParser.cs index b17fc24d2..60c09c834 100644 --- a/src/TraceEvent/Parsers/ClrTraceEventParser.cs +++ b/src/TraceEvent/Parsers/ClrTraceEventParser.cs @@ -2122,6 +2122,10 @@ static private YieldProcessorMeasurementTraceData YieldProcessorMeasurementTempl { // action, eventid, taskid, taskName, taskGuid, opcode, opcodeName, providerGuid, providerName return new YieldProcessorMeasurementTraceData(action, 58, 37, "YieldProcessorMeasurement", YieldProcessorMeasurementTaskGuid, 0, "Info", ProviderGuid, ProviderName); } + static private ThreadPoolMinMaxThreadsTraceData ThreadPoolMinMaxThreadsTemplate(Action action) + { // action, eventid, taskid, taskName, taskGuid, opcode, opcodeName, providerGuid, providerName + return new ThreadPoolMinMaxThreadsTraceData(action, 58, 37, "YieldProcessorMeasurement", YieldProcessorMeasurementTaskGuid, 0, "Info", ProviderGuid, ProviderName); + } static private volatile TraceEvent[] s_templates; protected internal override void EnumerateTemplates(Func eventsToObserve, Action callback) @@ -2279,7 +2283,7 @@ protected internal override void EnumerateTemplates(Func Date: Wed, 15 Jun 2022 11:14:38 -0700 Subject: [PATCH 4/5] Fix ThreadPoolMinMaxThreadsTemplate --- src/TraceEvent/Parsers/ClrTraceEventParser.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TraceEvent/Parsers/ClrTraceEventParser.cs b/src/TraceEvent/Parsers/ClrTraceEventParser.cs index 60c09c834..9e46997e9 100644 --- a/src/TraceEvent/Parsers/ClrTraceEventParser.cs +++ b/src/TraceEvent/Parsers/ClrTraceEventParser.cs @@ -2124,7 +2124,7 @@ static private YieldProcessorMeasurementTraceData YieldProcessorMeasurementTempl } static private ThreadPoolMinMaxThreadsTraceData ThreadPoolMinMaxThreadsTemplate(Action action) { // action, eventid, taskid, taskName, taskGuid, opcode, opcodeName, providerGuid, providerName - return new ThreadPoolMinMaxThreadsTraceData(action, 58, 37, "YieldProcessorMeasurement", YieldProcessorMeasurementTaskGuid, 0, "Info", ProviderGuid, ProviderName); + return new ThreadPoolMinMaxThreadsTraceData(action, 59, 38, "ThreadPoolMinMaxThreads", ThreadPoolMinMaxThreadsTaskGuid, 0, "Info", ProviderGuid, ProviderName); } static private volatile TraceEvent[] s_templates; From de3276fb466b3239af239cfed6a6468da71e3bf1 Mon Sep 17 00:00:00 2001 From: Eduardo Manuel Velarde Polar Date: Wed, 15 Jun 2022 12:24:32 -0700 Subject: [PATCH 5/5] Switch to new style in ThreadPoolMinMaxThreads --- src/TraceEvent/Parsers/ClrTraceEventParser.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/TraceEvent/Parsers/ClrTraceEventParser.cs b/src/TraceEvent/Parsers/ClrTraceEventParser.cs index 9e46997e9..204c6b6cb 100644 --- a/src/TraceEvent/Parsers/ClrTraceEventParser.cs +++ b/src/TraceEvent/Parsers/ClrTraceEventParser.cs @@ -986,8 +986,7 @@ public event Action ThreadPoolMinMaxThreads { add { - // action, eventid, taskid, taskName, taskGuid, opcode, opcodeName, providerGuid, providerName - RegisterTemplate(new ThreadPoolMinMaxThreadsTraceData(value, 59, 38, "ThreadPoolMinMaxThreads", ThreadPoolMinMaxThreadsTaskGuid, 0, "Info", ProviderGuid, ProviderName)); + RegisterTemplate(ThreadPoolMinMaxThreadsTemplate(value)); } remove {