From 50f2342e5e00521426464f374330c17cd3ccd44b Mon Sep 17 00:00:00 2001
From: Kunal Pathak
Date: Mon, 12 Oct 2020 13:49:44 -0700
Subject: [PATCH 1/9] Display Allocated Heap Size
---
src/PerfView/JitStats.cs | 32 +++++++++++------
.../Computers/TraceManagedProcess.cs | 35 ++++++++++++++++++-
2 files changed, 55 insertions(+), 12 deletions(-)
diff --git a/src/PerfView/JitStats.cs b/src/PerfView/JitStats.cs
index 4dc91f352..11180217c 100644
--- a/src/PerfView/JitStats.cs
+++ b/src/PerfView/JitStats.cs
@@ -160,6 +160,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"Num Compilations | " +
"IL Size | " +
"Native Size | " +
+ "Allocated Heap Size | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.Foreground) + " msec | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.MulticoreJitBackground) + " msec | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.TieredCompilationBackground) + " msec | " +
@@ -171,9 +172,10 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"{2:n0} | " +
"{3:n0} | " +
"{4:n0} | " +
- "{5:n1} | " +
+ "{5:n0} | " +
"{6:n1} | " +
"{7:n1} | " +
+ "{8:n1} | " +
"";
writer.WriteLine(moduleTableRow,
"TOTAL",
@@ -181,6 +183,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
runtime.JIT.Stats().Count,
runtime.JIT.Stats().TotalILSize,
runtime.JIT.Stats().TotalNativeSize,
+ runtime.JIT.Stats().TotalAllocatedHeapSize,
runtime.JIT.Stats().TotalForegroundCpuTimeMSec,
runtime.JIT.Stats().TotalBackgroundMultiCoreJitCpuTimeMSec,
runtime.JIT.Stats().TotalBackgroundTieredCompilationCpuTimeMSec);
@@ -193,6 +196,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
info.Count,
info.TotalILSize,
info.TotalNativeSize,
+ info.TotalAllocatedHeapSize,
info.TotalForegroundCpuTimeMSec,
info.TotalBackgroundMultiCoreJitCpuTimeMSec,
info.TotalBackgroundTieredCompilationCpuTimeMSec);
@@ -224,7 +228,8 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"Start (msec) | " +
"Jit Time (msec) | " +
"IL Size | " +
- "Native Size | ");
+ "Native Size | " +
+ "Allocated Heap Size | ");
if (showOptimizationTiers)
{
writer.Write("Optimization Tier | ");
@@ -248,11 +253,13 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"{0:n3} | " +
"{1:n1} | " +
"{2:n0} | " +
- "{3:n0} | ",
+ "{3:n0} | " +
+ "{4:n0} | ",
_event.StartTimeMSec,
_event.CompileCpuTimeMSec,
_event.ILSize,
- _event.NativeSize);
+ _event.NativeSize,
+ _event.AllocatedHeapSize);
if (showOptimizationTiers)
{
writer.Write(
@@ -377,7 +384,7 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
bool showOptimizationTiers = ShouldShowOptimizationTiers(runtime);
using (var writer = File.CreateText(filePath))
{
- writer.Write("Start MSec{0}JitTime MSec{0}ThreadID{0}IL Size{0}Native Size", listSeparator);
+ writer.Write("Start MSec{0}JitTime MSec{0}ThreadID{0}IL Size{0}Native Size{0}Allocated Heap Size", listSeparator);
if (showOptimizationTiers)
{
writer.Write("{0}OptimizationTier", listSeparator);
@@ -390,13 +397,14 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
var csvMethodName = _event.MethodName.Replace(",", " "); // Insure there are no , in the name
writer.Write(
- "{1:f3}{0}{2:f3}{0}{3}{0}{4}{0}{5}",
+ "{1:f3}{0}{2:f3}{0}{3}{0}{4}{0}{5}{0}{6}",
listSeparator,
_event.StartTimeMSec,
_event.CompileCpuTimeMSec,
_event.ThreadID,
_event.ILSize,
- _event.NativeSize);
+ _event.NativeSize,
+ _event.AllocatedHeapSize);
if (showOptimizationTiers)
{
writer.Write(
@@ -478,8 +486,8 @@ public static void ToXml(TextWriter writer, TraceProcess stats, TraceLoadedDotNe
JITStatsEx statsEx = JITStatsEx.Create(runtime);
// TODO pay attention to indent;
- writer.Write(" ");
- writer.WriteLine(" ",
- statsEx.TotalModuleStats.Count, runtime.JIT.Stats().Count, runtime.JIT.Stats().TotalCpuTimeMSec, runtime.JIT.Stats().TotalILSize, runtime.JIT.Stats().TotalNativeSize);
+ writer.WriteLine(" ",
+ statsEx.TotalModuleStats.Count, runtime.JIT.Stats().Count, runtime.JIT.Stats().TotalCpuTimeMSec, runtime.JIT.Stats().TotalILSize, runtime.JIT.Stats().TotalNativeSize, runtime.JIT.Stats().TotalAllocatedHeapSize);
// Sort the module list by Jit Time;
List moduleNames = new List(statsEx.TotalModuleStats.Keys);
@@ -528,6 +536,7 @@ public static void ToXml(TextWriter writer, TraceProcess stats, TraceLoadedDotNe
writer.Write(" Count={0}", StringUtilities.QuotePadLeft(info.Count.ToString(), 7));
writer.Write(" ILSize={0}", StringUtilities.QuotePadLeft(info.TotalILSize.ToString(), 9));
writer.Write(" NativeSize={0}", StringUtilities.QuotePadLeft(info.TotalNativeSize.ToString(), 9));
+ writer.Write(" AllocatedHeapSize={0}", StringUtilities.QuotePadLeft(info.TotalAllocatedHeapSize.ToString(), 9));
writer.Write(" Name=\"{0}\"", moduleName);
writer.WriteLine("/>");
}
@@ -543,6 +552,7 @@ private static void ToXml(TextWriter writer, TraceJittedMethod info, bool showOp
writer.Write(" JitTimeMSec={0}", StringUtilities.QuotePadLeft(info.CompileCpuTimeMSec.ToString("n3"), 8));
writer.Write(" ILSize={0}", StringUtilities.QuotePadLeft(info.ILSize.ToString(), 10));
writer.Write(" NativeSize={0}", StringUtilities.QuotePadLeft(info.NativeSize.ToString(), 10));
+ writer.Write(" AllocatedHeapSize={0}", StringUtilities.QuotePadLeft(info.AllocatedHeapSize.ToString(), 10));
if (showOptimizationTiers)
{
writer.Write(
diff --git a/src/TraceEvent/Computers/TraceManagedProcess.cs b/src/TraceEvent/Computers/TraceManagedProcess.cs
index cf7ad2378..0bce85910 100644
--- a/src/TraceEvent/Computers/TraceManagedProcess.cs
+++ b/src/TraceEvent/Computers/TraceManagedProcess.cs
@@ -1301,6 +1301,15 @@ internal static void SetupCallbacks(TraceEventDispatcher source)
}
};
+ clrPrivate.LoaderHeapAllocRequest += delegate(LoaderHeapAllocRequestTraceData data)
+ {
+ var process = data.Process();
+ var stats = currentManagedProcess(data);
+ var _method = JITStats.JitAllocComplete(stats, data);
+ //TODO: What to do here of _method??
+
+ };
+
clrPrivate.ClrMulticoreJitCommon += delegate (MulticoreJitPrivateTraceData data)
{
var process = data.Process();
@@ -3776,6 +3785,10 @@ public class JITStats
///
public long TotalNativeSize;
///
+ /// Total allocated heap size for all JITT'd methods
+ ///
+ public long TotalAllocatedHeapSize;
+ ///
/// Indication if this is running on .NET 4.x+
///
[Obsolete("This is experimental, you should not use it yet for non-experimental purposes.")]
@@ -3848,6 +3861,7 @@ public void AddMethodToStatistics(TraceJittedMethod method)
TotalCpuTimeMSec += method.CompileCpuTimeMSec;
TotalILSize += method.ILSize;
TotalNativeSize += method.NativeSize;
+ TotalAllocatedHeapSize += method.AllocatedHeapSize;
if (method.CompilationThreadKind == CompilationThreadKind.MulticoreJitBackground)
{
CountBackgroundMultiCoreJit++;
@@ -3867,7 +3881,7 @@ public void AddMethodToStatistics(TraceJittedMethod method)
#region private
///
- /// Legacgy
+ /// Legacy
///
internal static TraceJittedMethod MethodComplete(TraceLoadedDotNetRuntime stats, MethodLoadUnloadTraceDataBase data, string methodName, int rejitID, out bool createdNewMethod)
{
@@ -3912,6 +3926,21 @@ internal static TraceJittedMethod MethodComplete(TraceLoadedDotNetRuntime stats,
return _method;
}
+ ///
+ /// Handles AllocRequest event for JIT
+ ///
+ internal static TraceJittedMethod JitAllocComplete(TraceLoadedDotNetRuntime stats, LoaderHeapAllocRequestTraceData data)
+ {
+ TraceJittedMethod _method = stats.JIT.m_stats.FindIncompleteJitEventOnThread(stats, data.ThreadID);
+ if (_method != null)
+ {
+ _method.AllocatedHeapSize = data.RequestSize;
+ }
+
+ stats.JIT.m_stats.TotalAllocatedHeapSize += data.RequestSize;
+ return _method;
+ }
+
///
/// Uniquely represents a method within a process.
/// Used as a lookup key for data structures.
@@ -4116,6 +4145,10 @@ public class TraceJittedMethod
///
public int NativeSize;
///
+ /// Heap size allocated for JIT code of method
+ ///
+ public int AllocatedHeapSize;
+ ///
/// Relative start time of JIT'd method
///
public double StartTimeMSec;
From 63959233ab8642570e1b9a4e31c448ea2de5ce9c Mon Sep 17 00:00:00 2001
From: Kunal Pathak
Date: Wed, 14 Oct 2020 09:40:45 -0700
Subject: [PATCH 2/9] Accumulate allocation size at method level
---
src/TraceEvent/Computers/TraceManagedProcess.cs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/TraceEvent/Computers/TraceManagedProcess.cs b/src/TraceEvent/Computers/TraceManagedProcess.cs
index 0bce85910..3bedc803b 100644
--- a/src/TraceEvent/Computers/TraceManagedProcess.cs
+++ b/src/TraceEvent/Computers/TraceManagedProcess.cs
@@ -3934,10 +3934,10 @@ internal static TraceJittedMethod JitAllocComplete(TraceLoadedDotNetRuntime stat
TraceJittedMethod _method = stats.JIT.m_stats.FindIncompleteJitEventOnThread(stats, data.ThreadID);
if (_method != null)
{
- _method.AllocatedHeapSize = data.RequestSize;
+ _method.AllocatedHeapSize += data.RequestSize;
+ stats.JIT.m_stats.TotalAllocatedHeapSize += data.RequestSize;
}
- stats.JIT.m_stats.TotalAllocatedHeapSize += data.RequestSize;
return _method;
}
From ef5860d199c839a016a6aa162e053feacfea862d Mon Sep 17 00:00:00 2001
From: Kunal Pathak
Date: Wed, 14 Oct 2020 13:33:02 -0700
Subject: [PATCH 3/9] Rename some variables and methods
---
src/PerfView/JitStats.cs | 20 +++++++++----------
.../Computers/TraceManagedProcess.cs | 19 ++++++++----------
2 files changed, 18 insertions(+), 21 deletions(-)
diff --git a/src/PerfView/JitStats.cs b/src/PerfView/JitStats.cs
index 11180217c..1c3c854f0 100644
--- a/src/PerfView/JitStats.cs
+++ b/src/PerfView/JitStats.cs
@@ -160,7 +160,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"Num Compilations | " +
"IL Size | " +
"Native Size | " +
- "Allocated Heap Size | " +
+ "LoaderHeap Allocation Size | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.Foreground) + " msec | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.MulticoreJitBackground) + " msec | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.TieredCompilationBackground) + " msec | " +
@@ -183,7 +183,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
runtime.JIT.Stats().Count,
runtime.JIT.Stats().TotalILSize,
runtime.JIT.Stats().TotalNativeSize,
- runtime.JIT.Stats().TotalAllocatedHeapSize,
+ runtime.JIT.Stats().TotalLoaderHeapAllocSize,
runtime.JIT.Stats().TotalForegroundCpuTimeMSec,
runtime.JIT.Stats().TotalBackgroundMultiCoreJitCpuTimeMSec,
runtime.JIT.Stats().TotalBackgroundTieredCompilationCpuTimeMSec);
@@ -196,7 +196,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
info.Count,
info.TotalILSize,
info.TotalNativeSize,
- info.TotalAllocatedHeapSize,
+ info.TotalLoaderHeapAllocSize,
info.TotalForegroundCpuTimeMSec,
info.TotalBackgroundMultiCoreJitCpuTimeMSec,
info.TotalBackgroundTieredCompilationCpuTimeMSec);
@@ -259,7 +259,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
_event.CompileCpuTimeMSec,
_event.ILSize,
_event.NativeSize,
- _event.AllocatedHeapSize);
+ _event.LoaderHeapAllocSize);
if (showOptimizationTiers)
{
writer.Write(
@@ -384,7 +384,7 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
bool showOptimizationTiers = ShouldShowOptimizationTiers(runtime);
using (var writer = File.CreateText(filePath))
{
- writer.Write("Start MSec{0}JitTime MSec{0}ThreadID{0}IL Size{0}Native Size{0}Allocated Heap Size", listSeparator);
+ writer.Write("Start MSec{0}JitTime MSec{0}ThreadID{0}IL Size{0}Native Size{0}LoaderHeap Allocation Size", listSeparator);
if (showOptimizationTiers)
{
writer.Write("{0}OptimizationTier", listSeparator);
@@ -404,7 +404,7 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
_event.ThreadID,
_event.ILSize,
_event.NativeSize,
- _event.AllocatedHeapSize);
+ _event.LoaderHeapAllocSize);
if (showOptimizationTiers)
{
writer.Write(
@@ -487,7 +487,7 @@ public static void ToXml(TextWriter writer, TraceProcess stats, TraceLoadedDotNe
// TODO pay attention to indent;
writer.Write(" ");
writer.WriteLine(" ",
- statsEx.TotalModuleStats.Count, runtime.JIT.Stats().Count, runtime.JIT.Stats().TotalCpuTimeMSec, runtime.JIT.Stats().TotalILSize, runtime.JIT.Stats().TotalNativeSize, runtime.JIT.Stats().TotalAllocatedHeapSize);
+ statsEx.TotalModuleStats.Count, runtime.JIT.Stats().Count, runtime.JIT.Stats().TotalCpuTimeMSec, runtime.JIT.Stats().TotalILSize, runtime.JIT.Stats().TotalNativeSize, runtime.JIT.Stats().TotalLoaderHeapAllocSize);
// Sort the module list by Jit Time;
List moduleNames = new List(statsEx.TotalModuleStats.Keys);
@@ -536,7 +536,7 @@ public static void ToXml(TextWriter writer, TraceProcess stats, TraceLoadedDotNe
writer.Write(" Count={0}", StringUtilities.QuotePadLeft(info.Count.ToString(), 7));
writer.Write(" ILSize={0}", StringUtilities.QuotePadLeft(info.TotalILSize.ToString(), 9));
writer.Write(" NativeSize={0}", StringUtilities.QuotePadLeft(info.TotalNativeSize.ToString(), 9));
- writer.Write(" AllocatedHeapSize={0}", StringUtilities.QuotePadLeft(info.TotalAllocatedHeapSize.ToString(), 9));
+ writer.Write(" AllocatedHeapSize={0}", StringUtilities.QuotePadLeft(info.TotalLoaderHeapAllocSize.ToString(), 9));
writer.Write(" Name=\"{0}\"", moduleName);
writer.WriteLine("/>");
}
@@ -552,7 +552,7 @@ private static void ToXml(TextWriter writer, TraceJittedMethod info, bool showOp
writer.Write(" JitTimeMSec={0}", StringUtilities.QuotePadLeft(info.CompileCpuTimeMSec.ToString("n3"), 8));
writer.Write(" ILSize={0}", StringUtilities.QuotePadLeft(info.ILSize.ToString(), 10));
writer.Write(" NativeSize={0}", StringUtilities.QuotePadLeft(info.NativeSize.ToString(), 10));
- writer.Write(" AllocatedHeapSize={0}", StringUtilities.QuotePadLeft(info.AllocatedHeapSize.ToString(), 10));
+ writer.Write(" AllocatedHeapSize={0}", StringUtilities.QuotePadLeft(info.LoaderHeapAllocSize.ToString(), 10));
if (showOptimizationTiers)
{
writer.Write(
diff --git a/src/TraceEvent/Computers/TraceManagedProcess.cs b/src/TraceEvent/Computers/TraceManagedProcess.cs
index 3bedc803b..9cfbccd2f 100644
--- a/src/TraceEvent/Computers/TraceManagedProcess.cs
+++ b/src/TraceEvent/Computers/TraceManagedProcess.cs
@@ -1305,9 +1305,7 @@ internal static void SetupCallbacks(TraceEventDispatcher source)
{
var process = data.Process();
var stats = currentManagedProcess(data);
- var _method = JITStats.JitAllocComplete(stats, data);
- //TODO: What to do here of _method??
-
+ JITStats.LogJitMethodAllocation(stats, data);
};
clrPrivate.ClrMulticoreJitCommon += delegate (MulticoreJitPrivateTraceData data)
@@ -3787,7 +3785,7 @@ public class JITStats
///
/// Total allocated heap size for all JITT'd methods
///
- public long TotalAllocatedHeapSize;
+ public long TotalLoaderHeapAllocSize;
///
/// Indication if this is running on .NET 4.x+
///
@@ -3861,7 +3859,7 @@ public void AddMethodToStatistics(TraceJittedMethod method)
TotalCpuTimeMSec += method.CompileCpuTimeMSec;
TotalILSize += method.ILSize;
TotalNativeSize += method.NativeSize;
- TotalAllocatedHeapSize += method.AllocatedHeapSize;
+ TotalLoaderHeapAllocSize += method.LoaderHeapAllocSize;
if (method.CompilationThreadKind == CompilationThreadKind.MulticoreJitBackground)
{
CountBackgroundMultiCoreJit++;
@@ -3905,6 +3903,7 @@ internal static TraceJittedMethod MethodComplete(TraceLoadedDotNetRuntime stats,
}
}
_method.NativeSize = data.MethodSize;
+ Console.WriteLine("MethodName= {0}, Size= {1}", methodName, data.MethodSize);
_method.CompileCpuTimeMSec = data.TimeStampRelativeMSec - _method.StartTimeMSec;
_method.SetOptimizationTier(data.OptimizationTier, stats);
_method.VersionID = rejitID;
@@ -3929,16 +3928,14 @@ internal static TraceJittedMethod MethodComplete(TraceLoadedDotNetRuntime stats,
///
/// Handles AllocRequest event for JIT
///
- internal static TraceJittedMethod JitAllocComplete(TraceLoadedDotNetRuntime stats, LoaderHeapAllocRequestTraceData data)
+ internal static void LogJitMethodAllocation(TraceLoadedDotNetRuntime stats, LoaderHeapAllocRequestTraceData data)
{
TraceJittedMethod _method = stats.JIT.m_stats.FindIncompleteJitEventOnThread(stats, data.ThreadID);
if (_method != null)
{
- _method.AllocatedHeapSize += data.RequestSize;
- stats.JIT.m_stats.TotalAllocatedHeapSize += data.RequestSize;
+ _method.LoaderHeapAllocSize += data.RequestSize;
+ stats.JIT.m_stats.TotalLoaderHeapAllocSize += data.RequestSize;
}
-
- return _method;
}
///
@@ -4147,7 +4144,7 @@ public class TraceJittedMethod
///
/// Heap size allocated for JIT code of method
///
- public int AllocatedHeapSize;
+ public int LoaderHeapAllocSize;
///
/// Relative start time of JIT'd method
///
From eabad25120c9960fe045629752697d0e379d5cce Mon Sep 17 00:00:00 2001
From: Kunal Pathak
Date: Wed, 14 Oct 2020 13:33:49 -0700
Subject: [PATCH 4/9] Display N/A if LoaderHeap event is not enabled
---
src/PerfView/JitStats.cs | 22 +++++++++----------
.../Computers/TraceManagedProcess.cs | 11 ++++++++++
2 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/src/PerfView/JitStats.cs b/src/PerfView/JitStats.cs
index 1c3c854f0..786ebcd29 100644
--- a/src/PerfView/JitStats.cs
+++ b/src/PerfView/JitStats.cs
@@ -160,7 +160,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"Num Compilations | " +
"IL Size | " +
"Native Size | " +
- "LoaderHeap Allocation Size | " +
+ "LoaderHeap Allocation Size | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.Foreground) + " msec | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.MulticoreJitBackground) + " msec | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.TieredCompilationBackground) + " msec | " +
@@ -183,7 +183,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
runtime.JIT.Stats().Count,
runtime.JIT.Stats().TotalILSize,
runtime.JIT.Stats().TotalNativeSize,
- runtime.JIT.Stats().TotalLoaderHeapAllocSize,
+ runtime.JIT.Stats().TotalLoaderHeapAllocSizeIfAvailable,
runtime.JIT.Stats().TotalForegroundCpuTimeMSec,
runtime.JIT.Stats().TotalBackgroundMultiCoreJitCpuTimeMSec,
runtime.JIT.Stats().TotalBackgroundTieredCompilationCpuTimeMSec);
@@ -196,7 +196,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
info.Count,
info.TotalILSize,
info.TotalNativeSize,
- info.TotalLoaderHeapAllocSize,
+ info.TotalLoaderHeapAllocSizeIfAvailable,
info.TotalForegroundCpuTimeMSec,
info.TotalBackgroundMultiCoreJitCpuTimeMSec,
info.TotalBackgroundTieredCompilationCpuTimeMSec);
@@ -259,7 +259,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
_event.CompileCpuTimeMSec,
_event.ILSize,
_event.NativeSize,
- _event.LoaderHeapAllocSize);
+ _event.LoaderHeapAllocSizeIfAvailable);
if (showOptimizationTiers)
{
writer.Write(
@@ -404,7 +404,7 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
_event.ThreadID,
_event.ILSize,
_event.NativeSize,
- _event.LoaderHeapAllocSize);
+ _event.LoaderHeapAllocSizeIfAvailable);
if (showOptimizationTiers)
{
writer.Write(
@@ -486,8 +486,8 @@ public static void ToXml(TextWriter writer, TraceProcess stats, TraceLoadedDotNe
JITStatsEx statsEx = JITStatsEx.Create(runtime);
// TODO pay attention to indent;
- writer.Write(" ");
- writer.WriteLine(" ",
- statsEx.TotalModuleStats.Count, runtime.JIT.Stats().Count, runtime.JIT.Stats().TotalCpuTimeMSec, runtime.JIT.Stats().TotalILSize, runtime.JIT.Stats().TotalNativeSize, runtime.JIT.Stats().TotalLoaderHeapAllocSize);
+ writer.WriteLine(" ",
+ statsEx.TotalModuleStats.Count, runtime.JIT.Stats().Count, runtime.JIT.Stats().TotalCpuTimeMSec, runtime.JIT.Stats().TotalILSize, runtime.JIT.Stats().TotalNativeSize, runtime.JIT.Stats().TotalLoaderHeapAllocSizeIfAvailable);
// Sort the module list by Jit Time;
List moduleNames = new List(statsEx.TotalModuleStats.Keys);
@@ -536,7 +536,7 @@ public static void ToXml(TextWriter writer, TraceProcess stats, TraceLoadedDotNe
writer.Write(" Count={0}", StringUtilities.QuotePadLeft(info.Count.ToString(), 7));
writer.Write(" ILSize={0}", StringUtilities.QuotePadLeft(info.TotalILSize.ToString(), 9));
writer.Write(" NativeSize={0}", StringUtilities.QuotePadLeft(info.TotalNativeSize.ToString(), 9));
- writer.Write(" AllocatedHeapSize={0}", StringUtilities.QuotePadLeft(info.TotalLoaderHeapAllocSize.ToString(), 9));
+ writer.Write(" LoaderHeapAllocSize={0}", StringUtilities.QuotePadLeft(info.TotalLoaderHeapAllocSizeIfAvailable, 9));
writer.Write(" Name=\"{0}\"", moduleName);
writer.WriteLine("/>");
}
@@ -552,7 +552,7 @@ private static void ToXml(TextWriter writer, TraceJittedMethod info, bool showOp
writer.Write(" JitTimeMSec={0}", StringUtilities.QuotePadLeft(info.CompileCpuTimeMSec.ToString("n3"), 8));
writer.Write(" ILSize={0}", StringUtilities.QuotePadLeft(info.ILSize.ToString(), 10));
writer.Write(" NativeSize={0}", StringUtilities.QuotePadLeft(info.NativeSize.ToString(), 10));
- writer.Write(" AllocatedHeapSize={0}", StringUtilities.QuotePadLeft(info.LoaderHeapAllocSize.ToString(), 10));
+ writer.Write(" LoaderHeapAllocSize={0}", StringUtilities.QuotePadLeft(info.LoaderHeapAllocSizeIfAvailable, 10));
if (showOptimizationTiers)
{
writer.Write(
diff --git a/src/TraceEvent/Computers/TraceManagedProcess.cs b/src/TraceEvent/Computers/TraceManagedProcess.cs
index 9cfbccd2f..1461b1489 100644
--- a/src/TraceEvent/Computers/TraceManagedProcess.cs
+++ b/src/TraceEvent/Computers/TraceManagedProcess.cs
@@ -3849,6 +3849,8 @@ public class JITStats
///
public HashSet SymbolsMissing = new HashSet();
+ public string TotalLoaderHeapAllocSizeIfAvailable => TotalLoaderHeapAllocSize > 0 ? TotalLoaderHeapAllocSize.ToString() : "N/A";
+
///
/// Aggregate a method to be included in the statistics
///
@@ -3933,6 +3935,7 @@ internal static void LogJitMethodAllocation(TraceLoadedDotNetRuntime stats, Load
TraceJittedMethod _method = stats.JIT.m_stats.FindIncompleteJitEventOnThread(stats, data.ThreadID);
if (_method != null)
{
+ _method.IsLoaderHeapAllocSizePresent = true;
_method.LoaderHeapAllocSize += data.RequestSize;
stats.JIT.m_stats.TotalLoaderHeapAllocSize += data.RequestSize;
}
@@ -4231,6 +4234,14 @@ public string BlockedReason
public bool IsDefaultVersion { get { return VersionID == 0; } }
+ internal bool IsLoaderHeapAllocSizePresent
+ {
+ get;
+ set;
+ }
+
+ public string LoaderHeapAllocSizeIfAvailable => IsLoaderHeapAllocSizePresent ? LoaderHeapAllocSize.ToString() : "N/A";
+
#region private
internal void SetOptimizationTier(OptimizationTier optimizationTier, TraceLoadedDotNetRuntime stats)
{
From 9b7924f1c9a084862e651ed9466caf86ff7352fb Mon Sep 17 00:00:00 2001
From: Kunal Pathak
Date: Tue, 27 Oct 2020 00:12:11 -0700
Subject: [PATCH 5/9] Add parsing logic for new event
---
src/PerfView/JitStats.cs | 127 ++++++++++++++----
.../Computers/TraceManagedProcess.cs | 61 ++++++---
src/TraceEvent/Parsers/ClrTraceEventParser.cs | 106 ++++++++++++++-
3 files changed, 253 insertions(+), 41 deletions(-)
diff --git a/src/PerfView/JitStats.cs b/src/PerfView/JitStats.cs
index 786ebcd29..737d241fe 100644
--- a/src/PerfView/JitStats.cs
+++ b/src/PerfView/JitStats.cs
@@ -160,11 +160,18 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"Num Compilations | " +
"IL Size | " +
"Native Size | " +
- "LoaderHeap Allocation Size | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.Foreground) + " msec | " +
"" + GetLongNameForThreadClassification(CompilationThreadKind.MulticoreJitBackground) + " msec | " +
- "" + GetLongNameForThreadClassification(CompilationThreadKind.TieredCompilationBackground) + " msec | " +
- "");
+ "" + GetLongNameForThreadClassification(CompilationThreadKind.TieredCompilationBackground) + " msec | ");
+
+ if (runtime.JIT.Stats().IsJitAllocSizePresent)
+ {
+ writer.WriteLine("Allocation Size for Hotcode | ");
+ writer.WriteLine("Allocation Size for ROData | ");
+ writer.WriteLine("Allocated size | ");
+ }
+
+ writer.WriteLine("");
string moduleTableRow = "" +
"{0} | " +
@@ -172,34 +179,60 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"{2:n0} | " +
"{3:n0} | " +
"{4:n0} | " +
- "{5:n0} | " +
+ "{5:n1} | " +
"{6:n1} | " +
"{7:n1} | " +
- "{8:n1} | " +
"
";
- writer.WriteLine(moduleTableRow,
+
+ writer.Write(moduleTableRow,
"TOTAL",
runtime.JIT.Stats().TotalCpuTimeMSec,
runtime.JIT.Stats().Count,
runtime.JIT.Stats().TotalILSize,
runtime.JIT.Stats().TotalNativeSize,
- runtime.JIT.Stats().TotalLoaderHeapAllocSizeIfAvailable,
runtime.JIT.Stats().TotalForegroundCpuTimeMSec,
runtime.JIT.Stats().TotalBackgroundMultiCoreJitCpuTimeMSec,
runtime.JIT.Stats().TotalBackgroundTieredCompilationCpuTimeMSec);
+
+ string allocSizeColumns = "";
+ if (runtime.JIT.Stats().IsJitAllocSizePresent)
+ {
+ allocSizeColumns +=
+ "{0:n0} | " +
+ "{1:n0} | " +
+ "{2:n0} | " +
+ "N/A | "; //TODO: See if this is needed.
+
+ writer.Write(allocSizeColumns,
+ runtime.JIT.Stats().TotalHotCodeAllocSize,
+ runtime.JIT.Stats().TotalRODataAllocSize,
+ runtime.JIT.Stats().TotalAllocSizeForJitCode);
+ }
+ writer.WriteLine();
+
foreach (string moduleName in moduleNames)
{
JITStats info = statsEx.TotalModuleStats[moduleName];
- writer.WriteLine(moduleTableRow,
+ writer.Write(moduleTableRow,
moduleName.Length == 0 ? "<UNKNOWN>" : moduleName,
info.TotalCpuTimeMSec,
info.Count,
info.TotalILSize,
info.TotalNativeSize,
- info.TotalLoaderHeapAllocSizeIfAvailable,
info.TotalForegroundCpuTimeMSec,
info.TotalBackgroundMultiCoreJitCpuTimeMSec,
info.TotalBackgroundTieredCompilationCpuTimeMSec);
+
+ if (runtime.JIT.Stats().IsJitAllocSizePresent)
+ {
+ writer.Write(allocSizeColumns,
+ info.TotalHotCodeAllocSize,
+ info.TotalRODataAllocSize,
+ info.TotalAllocSizeForJitCode);
+ }
+
+ writer.WriteLine();
+
}
writer.WriteLine("");
writer.WriteLine("");
@@ -228,8 +261,18 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"Start (msec) | " +
"Jit Time (msec) | " +
"IL Size | " +
- "Native Size | " +
- "Allocated Heap Size | ");
+ "Native Size | ");
+
+ if (runtime.JIT.Stats().IsJitAllocSizePresent)
+ {
+ writer.Write(
+ "HotCode Size | " +
+ "RO data Size | " +
+ "Allocated Heap Size | " +
+ "JIT Allocation Flag | "
+ );
+ }
+
if (showOptimizationTiers)
{
writer.Write("Optimization Tier | ");
@@ -253,13 +296,26 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"{0:n3} | " +
"{1:n1} | " +
"{2:n0} | " +
- "{3:n0} | " +
- "{4:n0} | ",
+ "{3:n0} | ",
_event.StartTimeMSec,
_event.CompileCpuTimeMSec,
_event.ILSize,
- _event.NativeSize,
- _event.LoaderHeapAllocSizeIfAvailable);
+ _event.NativeSize);
+
+ if (_event.IsJitAllocSizePresent)
+ {
+ writer.Write(
+ "{0:n0} | ",
+ "{1:n0} | ",
+ "{2:n0} | ",
+ "{3:n0} | ",
+ _event.HotCodeAllocSize,
+ _event.RODataAllocSize,
+ _event.RequestedAllocSizeForJitCode,
+ _event.JitAllocFlag
+ );
+ }
+
if (showOptimizationTiers)
{
writer.Write(
@@ -397,14 +453,24 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
var csvMethodName = _event.MethodName.Replace(",", " "); // Insure there are no , in the name
writer.Write(
- "{1:f3}{0}{2:f3}{0}{3}{0}{4}{0}{5}{0}{6}",
+ "{1:f3}{0}{2:f3}{0}{3}{0}{4}{0}{5}",
listSeparator,
_event.StartTimeMSec,
_event.CompileCpuTimeMSec,
_event.ThreadID,
_event.ILSize,
- _event.NativeSize,
- _event.LoaderHeapAllocSizeIfAvailable);
+ _event.NativeSize);
+
+ if (_event.IsJitAllocSizePresent)
+ {
+ writer.Write("{1}{0}{2}{0}{3}{0}{4}",
+ listSeparator,
+ _event.HotCodeAllocSize,
+ _event.RODataAllocSize,
+ _event.RequestedAllocSizeForJitCode,
+ _event.JitAllocFlag);
+ }
+
if (showOptimizationTiers)
{
writer.Write(
@@ -486,8 +552,8 @@ public static void ToXml(TextWriter writer, TraceProcess stats, TraceLoadedDotNe
JITStatsEx statsEx = JITStatsEx.Create(runtime);
// TODO pay attention to indent;
- writer.Write(" ");
- writer.WriteLine(" ",
- statsEx.TotalModuleStats.Count, runtime.JIT.Stats().Count, runtime.JIT.Stats().TotalCpuTimeMSec, runtime.JIT.Stats().TotalILSize, runtime.JIT.Stats().TotalNativeSize, runtime.JIT.Stats().TotalLoaderHeapAllocSizeIfAvailable);
+ writer.WriteLine(" moduleNames = new List(statsEx.TotalModuleStats.Keys);
@@ -536,7 +602,13 @@ public static void ToXml(TextWriter writer, TraceProcess stats, TraceLoadedDotNe
writer.Write(" Count={0}", StringUtilities.QuotePadLeft(info.Count.ToString(), 7));
writer.Write(" ILSize={0}", StringUtilities.QuotePadLeft(info.TotalILSize.ToString(), 9));
writer.Write(" NativeSize={0}", StringUtilities.QuotePadLeft(info.TotalNativeSize.ToString(), 9));
- writer.Write(" LoaderHeapAllocSize={0}", StringUtilities.QuotePadLeft(info.TotalLoaderHeapAllocSizeIfAvailable, 9));
+
+ if (info.IsJitAllocSizePresent)
+ {
+ writer.Write(" HotCodeAllocSize={0}", StringUtilities.QuotePadLeft(info.TotalHotCodeAllocSize.ToString(), 9));
+ writer.Write(" RODataAllocSize={0}", StringUtilities.QuotePadLeft(info.TotalRODataAllocSize.ToString(), 9));
+ writer.Write(" RequestedAllocSizeForJitCode={0}", StringUtilities.QuotePadLeft(info.TotalAllocSizeForJitCode.ToString(), 9));
+ }
writer.Write(" Name=\"{0}\"", moduleName);
writer.WriteLine("/>");
}
@@ -552,7 +624,14 @@ private static void ToXml(TextWriter writer, TraceJittedMethod info, bool showOp
writer.Write(" JitTimeMSec={0}", StringUtilities.QuotePadLeft(info.CompileCpuTimeMSec.ToString("n3"), 8));
writer.Write(" ILSize={0}", StringUtilities.QuotePadLeft(info.ILSize.ToString(), 10));
writer.Write(" NativeSize={0}", StringUtilities.QuotePadLeft(info.NativeSize.ToString(), 10));
- writer.Write(" LoaderHeapAllocSize={0}", StringUtilities.QuotePadLeft(info.LoaderHeapAllocSizeIfAvailable, 10));
+
+ if (info.IsJitAllocSizePresent)
+ {
+ writer.Write(" HotCodeAllocSize={0}", StringUtilities.QuotePadLeft(info.HotCodeAllocSize.ToString(), 10));
+ writer.Write(" RODataAllocSize={0}", StringUtilities.QuotePadLeft(info.RODataAllocSize.ToString(), 10));
+ writer.Write(" RequestedAllocSizeForJitCode={0}", StringUtilities.QuotePadLeft(info.RequestedAllocSizeForJitCode.ToString(), 10));
+ writer.Write(" JitAllocFlag={0}", StringUtilities.QuotePadLeft(info.JitAllocFlag.ToString(), 10));
+ }
if (showOptimizationTiers)
{
writer.Write(
diff --git a/src/TraceEvent/Computers/TraceManagedProcess.cs b/src/TraceEvent/Computers/TraceManagedProcess.cs
index 1461b1489..d303e8e14 100644
--- a/src/TraceEvent/Computers/TraceManagedProcess.cs
+++ b/src/TraceEvent/Computers/TraceManagedProcess.cs
@@ -1301,7 +1301,7 @@ internal static void SetupCallbacks(TraceEventDispatcher source)
}
};
- clrPrivate.LoaderHeapAllocRequest += delegate(LoaderHeapAllocRequestTraceData data)
+ source.Clr.MethodMemoryAllocatedForJitCode += delegate(MethodJitMemoryAllocatedForCodeTraceData data)
{
var process = data.Process();
var stats = currentManagedProcess(data);
@@ -3783,9 +3783,21 @@ public class JITStats
///
public long TotalNativeSize;
///
- /// Total allocated heap size for all JITT'd methods
+ /// Total hot code size allocated for all JITT'd methods
///
- public long TotalLoaderHeapAllocSize;
+ public long TotalHotCodeAllocSize;
+ ///
+ /// Total read-only data size allocated for all JITT'd methods
+ ///
+ public long TotalRODataAllocSize;
+ ///
+ /// Total size allocated for all JITT'd methods
+ ///
+ public long TotalAllocSizeForJitCode;
+ ///
+ /// If data from alloc size for JIT event present
+ ///
+ public bool IsJitAllocSizePresent = false;
///
/// Indication if this is running on .NET 4.x+
///
@@ -3849,8 +3861,6 @@ public class JITStats
///
public HashSet SymbolsMissing = new HashSet();
- public string TotalLoaderHeapAllocSizeIfAvailable => TotalLoaderHeapAllocSize > 0 ? TotalLoaderHeapAllocSize.ToString() : "N/A";
-
///
/// Aggregate a method to be included in the statistics
///
@@ -3861,7 +3871,9 @@ public void AddMethodToStatistics(TraceJittedMethod method)
TotalCpuTimeMSec += method.CompileCpuTimeMSec;
TotalILSize += method.ILSize;
TotalNativeSize += method.NativeSize;
- TotalLoaderHeapAllocSize += method.LoaderHeapAllocSize;
+ TotalHotCodeAllocSize += method.HotCodeAllocSize;
+ TotalRODataAllocSize += method.RODataAllocSize;
+ TotalAllocSizeForJitCode += method.RequestedAllocSizeForJitCode;
if (method.CompilationThreadKind == CompilationThreadKind.MulticoreJitBackground)
{
CountBackgroundMultiCoreJit++;
@@ -3930,14 +3942,23 @@ internal static TraceJittedMethod MethodComplete(TraceLoadedDotNetRuntime stats,
///
/// Handles AllocRequest event for JIT
///
- internal static void LogJitMethodAllocation(TraceLoadedDotNetRuntime stats, LoaderHeapAllocRequestTraceData data)
+ internal static void LogJitMethodAllocation(TraceLoadedDotNetRuntime stats, MethodJitMemoryAllocatedForCodeTraceData data)
{
TraceJittedMethod _method = stats.JIT.m_stats.FindIncompleteJitEventOnThread(stats, data.ThreadID);
if (_method != null)
{
- _method.IsLoaderHeapAllocSizePresent = true;
- _method.LoaderHeapAllocSize += data.RequestSize;
- stats.JIT.m_stats.TotalLoaderHeapAllocSize += data.RequestSize;
+ Debug.Assert(_method.HotCodeAllocSize == 0);
+
+ _method.IsJitAllocSizePresent = true;
+ _method.HotCodeAllocSize = data.HotCodeSize;
+ _method.RODataAllocSize = data.RODataSize;
+ _method.RequestedAllocSizeForJitCode = data.TotalRequestSize;
+ _method.JitAllocFlag = data.CorJitAllocMemFlag;
+
+ stats.JIT.m_stats.IsJitAllocSizePresent = true;
+ stats.JIT.m_stats.TotalHotCodeAllocSize += data.HotCodeSize;
+ stats.JIT.m_stats.TotalRODataAllocSize += data.RODataSize;
+ stats.JIT.m_stats.TotalAllocSizeForJitCode += data.TotalRequestSize;
}
}
@@ -4145,9 +4166,21 @@ public class TraceJittedMethod
///
public int NativeSize;
///
- /// Heap size allocated for JIT code of method
+ /// Hot code size allocated for JIT code of method
+ ///
+ public long HotCodeAllocSize;
+ ///
+ /// Read-only data size allocated for JIT code of method
+ ///
+ public long RODataAllocSize;
+ ///
+ /// Total size allocated for JIT code of method
+ ///
+ public long RequestedAllocSizeForJitCode;
+ ///
+ /// Jit allocation flag
///
- public int LoaderHeapAllocSize;
+ public int JitAllocFlag;
///
/// Relative start time of JIT'd method
///
@@ -4234,14 +4267,12 @@ public string BlockedReason
public bool IsDefaultVersion { get { return VersionID == 0; } }
- internal bool IsLoaderHeapAllocSizePresent
+ public bool IsJitAllocSizePresent
{
get;
set;
}
- public string LoaderHeapAllocSizeIfAvailable => IsLoaderHeapAllocSizePresent ? LoaderHeapAllocSize.ToString() : "N/A";
-
#region private
internal void SetOptimizationTier(OptimizationTier optimizationTier, TraceLoadedDotNetRuntime stats)
{
diff --git a/src/TraceEvent/Parsers/ClrTraceEventParser.cs b/src/TraceEvent/Parsers/ClrTraceEventParser.cs
index 44c2e72cd..26457bc9c 100644
--- a/src/TraceEvent/Parsers/ClrTraceEventParser.cs
+++ b/src/TraceEvent/Parsers/ClrTraceEventParser.cs
@@ -1510,7 +1510,17 @@ public event Action MethodUnloadVerbose
source.UnregisterEventTemplate(value, 38, MethodTaskGuid);
}
}
-
+ public event Action MethodMemoryAllocatedForJitCode
+ {
+ add
+ {
+ RegisterTemplate(new MethodJitMemoryAllocatedForCodeTraceData(value, 146, 9, "Method", MethodTaskGuid, 103, "MemoryAllocatedForJitCode", ProviderGuid, ProviderName));
+ }
+ remove
+ {
+ source.UnregisterEventTemplate(value, 146, MethodTaskGuid);
+ }
+ }
public event Action MethodR2RGetEntryPoint
{
add
@@ -1983,7 +1993,10 @@ static private TieredCompilationBackgroundJitStopTraceData TieredCompilationBack
{ // action, eventid, taskid, taskName, taskGuid, opcode, opcodeName, providerGuid, providerName
return new TieredCompilationBackgroundJitStopTraceData(action, 284, 31, "TieredCompilation", TieredCompilationTaskGuid, 2, "BackgroundJitStop", ProviderGuid, ProviderName);
}
-
+ static private MethodJitMemoryAllocatedForCodeTraceData MethodMemoryAllocatedForJitCodeTemplate(Action action)
+ { // action, eventid, taskid, taskName, taskGuid, opcode, opcodeName, providerGuid, providerName
+ return new MethodJitMemoryAllocatedForCodeTraceData(action, 146, 9, "Method", Guid.Empty, 103, "MemoryAllocatedForJitCode", ProviderGuid, ProviderName);
+ }
static private R2RGetEntryPointStartTraceData R2RGetEntryPointStartTemplate(Action action)
{ // action, eventid, taskid, taskName, taskGuid, opcode, opcodeName, providerGuid, providerName
return new R2RGetEntryPointStartTraceData(action, 160, 9, "Method", MethodTaskGuid, 33, "R2RGetEntryPointStart", ProviderGuid, ProviderName);
@@ -8792,6 +8805,95 @@ public override object PayloadValue(int index)
#endregion
}
+ public sealed class MethodJitMemoryAllocatedForCodeTraceData : TraceEvent
+ {
+ public string MethodBeingCompiledNamespace { get { return GetUnicodeStringAt(0); } }
+ public string MethodBeingCompiledName { get { return GetUnicodeStringAt(SkipUnicodeString(0)); } }
+ public string MethodBeingCompiledNameSignature { get { return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(0))); } }
+ public long HotCodeSize { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0)))); } }
+ public long RODataSize { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 8); } }
+ public long TotalRequestSize { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 16); } }
+ public int CorJitAllocMemFlag { get { return GetInt32At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 24); } }
+ public int ClrInstanceID { get { return GetInt16At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 28); } }
+
+ #region Private
+ internal MethodJitMemoryAllocatedForCodeTraceData(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 void Validate()
+ {
+ Debug.Assert(!(Version == 0 && EventDataLength != SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 30));
+ Debug.Assert(!(Version > 0 && EventDataLength < SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 30));
+ }
+ protected internal override Delegate Target
+ {
+ get { return Action; }
+ set { Action = (Action)value; }
+ }
+ public override StringBuilder ToXml(StringBuilder sb)
+ {
+ Prefix(sb);
+ XmlAttrib(sb, "MethodBeingCompiledNamespace", MethodBeingCompiledNamespace);
+ XmlAttrib(sb, "MethodBeingCompiledName", MethodBeingCompiledName);
+ XmlAttrib(sb, "MethodBeingCompiledNameSignature", MethodBeingCompiledNameSignature);
+ XmlAttrib(sb, "HotCodeSize", HotCodeSize);
+ XmlAttrib(sb, "RODataSize", RODataSize);
+ XmlAttrib(sb, "TotalRequestSize", TotalRequestSize);
+ XmlAttrib(sb, "CorJitAllocMemFlag", CorJitAllocMemFlag);
+ XmlAttrib(sb, "ClrInstanceID", ClrInstanceID);
+ sb.Append("/>");
+ return sb;
+ }
+
+ public override string[] PayloadNames
+ {
+ get
+ {
+ if (payloadNames == null)
+ payloadNames = new string[] { "MethodBeingCompiledNamespace", "MethodBeingCompiledName", "MethodBeingCompiledNameSignature", "HotCodeSize", "RODataSize", "TotalRequestSize", "CorJitAllocMemFlag", "ClrInstanceID" };
+ return payloadNames;
+ }
+ }
+
+ public override object PayloadValue(int index)
+ {
+ switch (index)
+ {
+ case 0:
+ return MethodBeingCompiledNamespace;
+ case 1:
+ return MethodBeingCompiledName;
+ case 2:
+ return MethodBeingCompiledNameSignature;
+ case 3:
+ return HotCodeSize;
+ case 4:
+ return RODataSize;
+ case 5:
+ return TotalRequestSize;
+ case 6:
+ return CorJitAllocMemFlag;
+ case 7:
+ return ClrInstanceID;
+ default:
+ Debug.Assert(false, "Bad field index");
+ return null;
+ }
+ }
+
+ public static ulong GetKeywords() { return 16; }
+ public static string GetProviderName() { return "Microsoft-Windows-DotNETRuntime"; }
+ public static Guid GetProviderGuid() { return new Guid("e13c0d23-ccbc-4e12-931b-d9cc2eee27e4"); }
+ private event Action Action;
+ #endregion
+ }
+
public sealed class TypeLoadStartTraceData : TraceEvent
{
public int TypeLoadStartID { get { return GetInt32At(0); } }
From 5072c71273228aa5e64642edd4a704d21cfd281e Mon Sep 17 00:00:00 2001
From: Kunal Pathak
Date: Thu, 29 Oct 2020 10:19:39 -0700
Subject: [PATCH 6/9] Working version
---
src/PerfView/JitStats.cs | 30 ++++++++++---------
src/TraceEvent/Parsers/ClrTraceEventParser.cs | 3 +-
2 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/src/PerfView/JitStats.cs b/src/PerfView/JitStats.cs
index 737d241fe..3e36b490c 100644
--- a/src/PerfView/JitStats.cs
+++ b/src/PerfView/JitStats.cs
@@ -154,7 +154,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
writer.WriteLine(" Summary of jitting time by module:
");
writer.WriteLine("");
writer.WriteLine("");
- writer.WriteLine("" +
+ writer.Write("
" +
"Name | " +
"JitTime msec | " +
"Num Compilations | " +
@@ -166,9 +166,9 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
if (runtime.JIT.Stats().IsJitAllocSizePresent)
{
- writer.WriteLine("Allocation Size for Hotcode | ");
- writer.WriteLine("Allocation Size for ROData | ");
- writer.WriteLine("Allocated size | ");
+ writer.Write("Allocation Size for Hotcode | ");
+ writer.Write("Allocation Size for ROData | ");
+ writer.Write("Allocated size | ");
}
writer.WriteLine("
");
@@ -181,8 +181,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"{4:n0} | " +
"{5:n1} | " +
"{6:n1} | " +
- "{7:n1} | " +
- "";
+ "{7:n1} | ";
writer.Write(moduleTableRow,
"TOTAL",
@@ -200,8 +199,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
allocSizeColumns +=
"{0:n0} | " +
"{1:n0} | " +
- "{2:n0} | " +
- "N/A | "; //TODO: See if this is needed.
+ "{2:n0} | ";
writer.Write(allocSizeColumns,
runtime.JIT.Stats().TotalHotCodeAllocSize,
@@ -231,7 +229,7 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
info.TotalAllocSizeForJitCode);
}
- writer.WriteLine();
+ writer.WriteLine("");
}
writer.WriteLine("
");
@@ -305,10 +303,10 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
if (_event.IsJitAllocSizePresent)
{
writer.Write(
- "{0:n0} | ",
- "{1:n0} | ",
- "{2:n0} | ",
- "{3:n0} | ",
+ "{0} | " +
+ "{1} | " +
+ "{2} | " +
+ "{3} | ",
_event.HotCodeAllocSize,
_event.RODataAllocSize,
_event.RequestedAllocSizeForJitCode,
@@ -440,7 +438,11 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
bool showOptimizationTiers = ShouldShowOptimizationTiers(runtime);
using (var writer = File.CreateText(filePath))
{
- writer.Write("Start MSec{0}JitTime MSec{0}ThreadID{0}IL Size{0}Native Size{0}LoaderHeap Allocation Size", listSeparator);
+ writer.Write("Start MSec{0}JitTime MSec{0}ThreadID{0}IL Size{0}Native Size", listSeparator);
+ if (runtime.JIT.Stats().IsJitAllocSizePresent)
+ {
+ writer.Write("HotCode Size{0}RO data Size{0}Allocated Heap Size{0}JIT Allocation Flag", listSeparator);
+ }
if (showOptimizationTiers)
{
writer.Write("{0}OptimizationTier", listSeparator);
diff --git a/src/TraceEvent/Parsers/ClrTraceEventParser.cs b/src/TraceEvent/Parsers/ClrTraceEventParser.cs
index 26457bc9c..92a0144ab 100644
--- a/src/TraceEvent/Parsers/ClrTraceEventParser.cs
+++ b/src/TraceEvent/Parsers/ClrTraceEventParser.cs
@@ -2015,7 +2015,7 @@ protected internal override void EnumerateTemplates(Func
Date: Thu, 29 Oct 2020 10:41:36 -0700
Subject: [PATCH 7/9] some misc bug fixes
---
src/PerfView/JitStats.cs | 11 ++++++----
.../Computers/TraceManagedProcess.cs | 22 +++++++++----------
2 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/src/PerfView/JitStats.cs b/src/PerfView/JitStats.cs
index 3e36b490c..1b711ce8b 100644
--- a/src/PerfView/JitStats.cs
+++ b/src/PerfView/JitStats.cs
@@ -441,7 +441,7 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
writer.Write("Start MSec{0}JitTime MSec{0}ThreadID{0}IL Size{0}Native Size", listSeparator);
if (runtime.JIT.Stats().IsJitAllocSizePresent)
{
- writer.Write("HotCode Size{0}RO data Size{0}Allocated Heap Size{0}JIT Allocation Flag", listSeparator);
+ writer.Write("{0}HotCode Size{0}RO data Size{0}Allocated Heap Size{0}JIT Allocation Flag", listSeparator);
}
if (showOptimizationTiers)
{
@@ -465,7 +465,7 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
if (_event.IsJitAllocSizePresent)
{
- writer.Write("{1}{0}{2}{0}{3}{0}{4}",
+ writer.Write("{0}{1}{0}{2}{0}{3}{0}{4}",
listSeparator,
_event.HotCodeAllocSize,
_event.RODataAllocSize,
@@ -554,8 +554,11 @@ public static void ToXml(TextWriter writer, TraceProcess stats, TraceLoadedDotNe
JITStatsEx statsEx = JITStatsEx.Create(runtime);
// TODO pay attention to indent;
- writer.Write("
Date: Thu, 29 Oct 2020 11:41:49 -0700
Subject: [PATCH 8/9] Rename some of the fields
---
src/PerfView/JitStats.cs | 34 +++++++++----------
.../Computers/TraceManagedProcess.cs | 22 ++++++------
src/TraceEvent/Parsers/ClrTraceEventParser.cs | 26 +++++++-------
3 files changed, 41 insertions(+), 41 deletions(-)
diff --git a/src/PerfView/JitStats.cs b/src/PerfView/JitStats.cs
index 1b711ce8b..d1d2b623c 100644
--- a/src/PerfView/JitStats.cs
+++ b/src/PerfView/JitStats.cs
@@ -166,9 +166,9 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
if (runtime.JIT.Stats().IsJitAllocSizePresent)
{
- writer.Write("Allocation Size for Hotcode | ");
- writer.Write("Allocation Size for ROData | ");
- writer.Write("Allocated size | ");
+ writer.Write("JIT Hotcode request size | ");
+ writer.Write("JIT RO-data request size | ");
+ writer.Write("Allocated size for JIT code | ");
}
writer.WriteLine("");
@@ -264,10 +264,10 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
if (runtime.JIT.Stats().IsJitAllocSizePresent)
{
writer.Write(
- "HotCode Size | " +
- "RO data Size | " +
- "Allocated Heap Size | " +
- "JIT Allocation Flag | "
+ "JIT Hotcode request size | " +
+ "JIT RO-data request size | " +
+ "Allocated size for JIT code | " +
+ "JIT Allocation Flags | "
);
}
@@ -307,9 +307,9 @@ public static void ToHtml(TextWriter writer, TraceProcess stats, TraceLoadedDotN
"{1} | " +
"{2} | " +
"{3} | ",
- _event.HotCodeAllocSize,
- _event.RODataAllocSize,
- _event.RequestedAllocSizeForJitCode,
+ _event.JitHotCodeRequestSize,
+ _event.JitRODataRequestSize,
+ _event.AllocatedSizeForJitCode,
_event.JitAllocFlag
);
}
@@ -441,7 +441,7 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
writer.Write("Start MSec{0}JitTime MSec{0}ThreadID{0}IL Size{0}Native Size", listSeparator);
if (runtime.JIT.Stats().IsJitAllocSizePresent)
{
- writer.Write("{0}HotCode Size{0}RO data Size{0}Allocated Heap Size{0}JIT Allocation Flag", listSeparator);
+ writer.Write("{0}JIT HotCode request size{0}JIT RO-data request size{0}Allocated size for JIT code{0}JIT Allocation Flag", listSeparator);
}
if (showOptimizationTiers)
{
@@ -467,9 +467,9 @@ public static void ToCsv(string filePath, TraceLoadedDotNetRuntime runtime)
{
writer.Write("{0}{1}{0}{2}{0}{3}{0}{4}",
listSeparator,
- _event.HotCodeAllocSize,
- _event.RODataAllocSize,
- _event.RequestedAllocSizeForJitCode,
+ _event.JitHotCodeRequestSize,
+ _event.JitRODataRequestSize,
+ _event.AllocatedSizeForJitCode,
_event.JitAllocFlag);
}
@@ -632,9 +632,9 @@ private static void ToXml(TextWriter writer, TraceJittedMethod info, bool showOp
if (info.IsJitAllocSizePresent)
{
- writer.Write(" HotCodeAllocSize={0}", StringUtilities.QuotePadLeft(info.HotCodeAllocSize.ToString(), 10));
- writer.Write(" RODataAllocSize={0}", StringUtilities.QuotePadLeft(info.RODataAllocSize.ToString(), 10));
- writer.Write(" RequestedAllocSizeForJitCode={0}", StringUtilities.QuotePadLeft(info.RequestedAllocSizeForJitCode.ToString(), 10));
+ writer.Write(" JITHotCodeRequestSize={0}", StringUtilities.QuotePadLeft(info.JitHotCodeRequestSize.ToString(), 10));
+ writer.Write(" JITRODataRequestSize={0}", StringUtilities.QuotePadLeft(info.JitRODataRequestSize.ToString(), 10));
+ writer.Write(" AllocSizeForJitCode={0}", StringUtilities.QuotePadLeft(info.AllocatedSizeForJitCode.ToString(), 10));
writer.Write(" JitAllocFlag={0}", StringUtilities.QuotePadLeft(info.JitAllocFlag.ToString(), 10));
}
if (showOptimizationTiers)
diff --git a/src/TraceEvent/Computers/TraceManagedProcess.cs b/src/TraceEvent/Computers/TraceManagedProcess.cs
index d2da63ebe..b04e0be38 100644
--- a/src/TraceEvent/Computers/TraceManagedProcess.cs
+++ b/src/TraceEvent/Computers/TraceManagedProcess.cs
@@ -3871,10 +3871,10 @@ public void AddMethodToStatistics(TraceJittedMethod method)
TotalCpuTimeMSec += method.CompileCpuTimeMSec;
TotalILSize += method.ILSize;
TotalNativeSize += method.NativeSize;
- TotalHotCodeAllocSize += method.HotCodeAllocSize;
- TotalRODataAllocSize += method.RODataAllocSize;
+ TotalHotCodeAllocSize += method.JitHotCodeRequestSize;
+ TotalRODataAllocSize += method.JitRODataRequestSize;
IsJitAllocSizePresent |= method.IsJitAllocSizePresent;
- TotalAllocSizeForJitCode += method.RequestedAllocSizeForJitCode;
+ TotalAllocSizeForJitCode += method.AllocatedSizeForJitCode;
if (method.CompilationThreadKind == CompilationThreadKind.MulticoreJitBackground)
{
CountBackgroundMultiCoreJit++;
@@ -3949,13 +3949,13 @@ internal static void LogJitMethodAllocation(TraceLoadedDotNetRuntime stats, Meth
if (_method != null)
{
// If we already counted alloc size for a method, don't count it again.
- if (_method.HotCodeAllocSize == 0)
+ if (_method.JitHotCodeRequestSize == 0)
{
_method.IsJitAllocSizePresent = true;
- _method.HotCodeAllocSize = data.HotCodeSize;
- _method.RODataAllocSize = data.RODataSize;
- _method.RequestedAllocSizeForJitCode = data.TotalRequestSize;
- _method.JitAllocFlag = data.CorJitAllocMemFlag;
+ _method.JitHotCodeRequestSize = data.JitHotCodeRequestSize;
+ _method.JitRODataRequestSize = data.JitRODataRequestSize;
+ _method.AllocatedSizeForJitCode = data.AllocatedSizeForJitCode;
+ _method.JitAllocFlag = data.JitAllocFlag;
}
}
}
@@ -4166,15 +4166,15 @@ public class TraceJittedMethod
///
/// Hot code size allocated for JIT code of method
///
- public long HotCodeAllocSize;
+ public long JitHotCodeRequestSize;
///
/// Read-only data size allocated for JIT code of method
///
- public long RODataAllocSize;
+ public long JitRODataRequestSize;
///
/// Total size allocated for JIT code of method
///
- public long RequestedAllocSizeForJitCode;
+ public long AllocatedSizeForJitCode;
///
/// Jit allocation flag
///
diff --git a/src/TraceEvent/Parsers/ClrTraceEventParser.cs b/src/TraceEvent/Parsers/ClrTraceEventParser.cs
index 92a0144ab..c71e3773a 100644
--- a/src/TraceEvent/Parsers/ClrTraceEventParser.cs
+++ b/src/TraceEvent/Parsers/ClrTraceEventParser.cs
@@ -8811,10 +8811,10 @@ public sealed class MethodJitMemoryAllocatedForCodeTraceData : TraceEvent
public string MethodBeingCompiledNamespace { get { return GetUnicodeStringAt(0); } }
public string MethodBeingCompiledName { get { return GetUnicodeStringAt(SkipUnicodeString(0)); } }
public string MethodBeingCompiledNameSignature { get { return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(0))); } }
- public long HotCodeSize { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0)))); } }
- public long RODataSize { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 8); } }
- public long TotalRequestSize { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 16); } }
- public int CorJitAllocMemFlag { get { return GetInt32At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 24); } }
+ public long JitHotCodeRequestSize { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0)))); } }
+ public long JitRODataRequestSize { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 8); } }
+ public long AllocatedSizeForJitCode { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 16); } }
+ public int JitAllocFlag { get { return GetInt32At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 24); } }
public int ClrInstanceID { get { return GetInt16At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 28); } }
#region Private
@@ -8843,10 +8843,10 @@ public override StringBuilder ToXml(StringBuilder sb)
XmlAttrib(sb, "MethodBeingCompiledNamespace", MethodBeingCompiledNamespace);
XmlAttrib(sb, "MethodBeingCompiledName", MethodBeingCompiledName);
XmlAttrib(sb, "MethodBeingCompiledNameSignature", MethodBeingCompiledNameSignature);
- XmlAttrib(sb, "HotCodeSize", HotCodeSize);
- XmlAttrib(sb, "RODataSize", RODataSize);
- XmlAttrib(sb, "TotalRequestSize", TotalRequestSize);
- XmlAttrib(sb, "CorJitAllocMemFlag", CorJitAllocMemFlag);
+ XmlAttrib(sb, "JitHotCodeRequestSize", JitHotCodeRequestSize);
+ XmlAttrib(sb, "JitRODataRequestSize", JitRODataRequestSize);
+ XmlAttrib(sb, "AllocatedSizeForJitCode", AllocatedSizeForJitCode);
+ XmlAttrib(sb, "JitAllocFlag", JitAllocFlag);
XmlAttrib(sb, "ClrInstanceID", ClrInstanceID);
sb.Append("/>");
return sb;
@@ -8857,7 +8857,7 @@ public override string[] PayloadNames
get
{
if (payloadNames == null)
- payloadNames = new string[] { "MethodBeingCompiledNamespace", "MethodBeingCompiledName", "MethodBeingCompiledNameSignature", "HotCodeSize", "RODataSize", "TotalRequestSize", "CorJitAllocMemFlag", "ClrInstanceID" };
+ payloadNames = new string[] { "MethodBeingCompiledNamespace", "MethodBeingCompiledName", "MethodBeingCompiledNameSignature", "JitHotCodeRequestSize", "JitRODataRequestSize", "AllocatedSizeForJitCode", "JitAllocFlag", "ClrInstanceID" };
return payloadNames;
}
}
@@ -8873,13 +8873,13 @@ public override object PayloadValue(int index)
case 2:
return MethodBeingCompiledNameSignature;
case 3:
- return HotCodeSize;
+ return JitHotCodeRequestSize;
case 4:
- return RODataSize;
+ return JitRODataRequestSize;
case 5:
- return TotalRequestSize;
+ return AllocatedSizeForJitCode;
case 6:
- return CorJitAllocMemFlag;
+ return JitAllocFlag;
case 7:
return ClrInstanceID;
default:
From a552161afd081611e617e5feadebe25e25e56dd8 Mon Sep 17 00:00:00 2001
From: Kunal Pathak
Date: Thu, 5 Nov 2020 15:29:59 -0800
Subject: [PATCH 9/9] Replace methodName with methodId
---
.../Computers/TraceManagedProcess.cs | 1 -
src/TraceEvent/Parsers/ClrTraceEventParser.cs | 40 +++++++++----------
2 files changed, 18 insertions(+), 23 deletions(-)
diff --git a/src/TraceEvent/Computers/TraceManagedProcess.cs b/src/TraceEvent/Computers/TraceManagedProcess.cs
index b04e0be38..e8bafe253 100644
--- a/src/TraceEvent/Computers/TraceManagedProcess.cs
+++ b/src/TraceEvent/Computers/TraceManagedProcess.cs
@@ -3918,7 +3918,6 @@ internal static TraceJittedMethod MethodComplete(TraceLoadedDotNetRuntime stats,
}
}
_method.NativeSize = data.MethodSize;
- Console.WriteLine("MethodName= {0}, Size= {1}", methodName, data.MethodSize);
_method.CompileCpuTimeMSec = data.TimeStampRelativeMSec - _method.StartTimeMSec;
_method.SetOptimizationTier(data.OptimizationTier, stats);
_method.VersionID = rejitID;
diff --git a/src/TraceEvent/Parsers/ClrTraceEventParser.cs b/src/TraceEvent/Parsers/ClrTraceEventParser.cs
index c71e3773a..c119b3f9c 100644
--- a/src/TraceEvent/Parsers/ClrTraceEventParser.cs
+++ b/src/TraceEvent/Parsers/ClrTraceEventParser.cs
@@ -8808,14 +8808,13 @@ public override object PayloadValue(int index)
public sealed class MethodJitMemoryAllocatedForCodeTraceData : TraceEvent
{
- public string MethodBeingCompiledNamespace { get { return GetUnicodeStringAt(0); } }
- public string MethodBeingCompiledName { get { return GetUnicodeStringAt(SkipUnicodeString(0)); } }
- public string MethodBeingCompiledNameSignature { get { return GetUnicodeStringAt(SkipUnicodeString(SkipUnicodeString(0))); } }
- public long JitHotCodeRequestSize { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0)))); } }
- public long JitRODataRequestSize { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 8); } }
- public long AllocatedSizeForJitCode { get { return GetInt64At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 16); } }
- public int JitAllocFlag { get { return GetInt32At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 24); } }
- public int ClrInstanceID { get { return GetInt16At(SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 28); } }
+ public long MethodID { get { return GetInt64At(0); } }
+ public long ModuleID { get { return GetInt64At(8); } }
+ public long JitHotCodeRequestSize { get { return GetInt64At(16); } }
+ public long JitRODataRequestSize { get { return GetInt64At(24); } }
+ public long AllocatedSizeForJitCode { get { return GetInt64At(32); } }
+ public int JitAllocFlag { get { return GetInt32At(40); } }
+ public int ClrInstanceID { get { return GetInt16At(44); } }
#region Private
internal MethodJitMemoryAllocatedForCodeTraceData(Action action, int eventID, int task, string taskName, Guid taskGuid, int opcode, string opcodeName, Guid providerGuid, string providerName)
@@ -8829,8 +8828,8 @@ protected internal override void Dispatch()
}
protected internal override void Validate()
{
- Debug.Assert(!(Version == 0 && EventDataLength != SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 30));
- Debug.Assert(!(Version > 0 && EventDataLength < SkipUnicodeString(SkipUnicodeString(SkipUnicodeString(0))) + 30));
+ Debug.Assert(!(Version == 0 && EventDataLength != 46));
+ Debug.Assert(!(Version > 0 && EventDataLength < 46));
}
protected internal override Delegate Target
{
@@ -8840,9 +8839,8 @@ protected internal override Delegate Target
public override StringBuilder ToXml(StringBuilder sb)
{
Prefix(sb);
- XmlAttrib(sb, "MethodBeingCompiledNamespace", MethodBeingCompiledNamespace);
- XmlAttrib(sb, "MethodBeingCompiledName", MethodBeingCompiledName);
- XmlAttrib(sb, "MethodBeingCompiledNameSignature", MethodBeingCompiledNameSignature);
+ XmlAttrib(sb, "MethodID", MethodID);
+ XmlAttrib(sb, "ModuleID", ModuleID);
XmlAttrib(sb, "JitHotCodeRequestSize", JitHotCodeRequestSize);
XmlAttrib(sb, "JitRODataRequestSize", JitRODataRequestSize);
XmlAttrib(sb, "AllocatedSizeForJitCode", AllocatedSizeForJitCode);
@@ -8857,7 +8855,7 @@ public override string[] PayloadNames
get
{
if (payloadNames == null)
- payloadNames = new string[] { "MethodBeingCompiledNamespace", "MethodBeingCompiledName", "MethodBeingCompiledNameSignature", "JitHotCodeRequestSize", "JitRODataRequestSize", "AllocatedSizeForJitCode", "JitAllocFlag", "ClrInstanceID" };
+ payloadNames = new string[] { "MethodID", "ModuleID", "JitHotCodeRequestSize", "JitRODataRequestSize", "AllocatedSizeForJitCode", "JitAllocFlag", "ClrInstanceID" };
return payloadNames;
}
}
@@ -8867,20 +8865,18 @@ public override object PayloadValue(int index)
switch (index)
{
case 0:
- return MethodBeingCompiledNamespace;
+ return MethodID;
case 1:
- return MethodBeingCompiledName;
+ return ModuleID;
case 2:
- return MethodBeingCompiledNameSignature;
- case 3:
return JitHotCodeRequestSize;
- case 4:
+ case 3:
return JitRODataRequestSize;
- case 5:
+ case 4:
return AllocatedSizeForJitCode;
- case 6:
+ case 5:
return JitAllocFlag;
- case 7:
+ case 6:
return ClrInstanceID;
default:
Debug.Assert(false, "Bad field index");