diff --git a/src/coreclr/vm/ClrEtwAll.man b/src/coreclr/vm/ClrEtwAll.man
index f27bf4feb2f9f3..de4b1b04343f31 100644
--- a/src/coreclr/vm/ClrEtwAll.man
+++ b/src/coreclr/vm/ClrEtwAll.man
@@ -87,6 +87,8 @@
message="$(string.RuntimePublisher.TypeDiagnosticKeywordMessage)" symbol="CLR_TYPEDIAGNOSTIC_KEYWORD" />
+
@@ -422,7 +424,13 @@
-
+
+
+
+
+
@@ -1430,6 +1438,20 @@
+
+
+
+
+
+
+
+ %1
+ %2
+ %3
+
+
+
+
@@ -3274,6 +3296,11 @@
task="ThreadPoolWorkerThread"
symbol="ThreadPoolWorkerThreadWait" message="$(string.RuntimePublisher.ThreadPoolWorkerThreadEventMessage)"/>
+
+
+
@@ -7329,6 +7357,7 @@
+
@@ -7657,6 +7686,7 @@
+
diff --git a/src/coreclr/vm/eventtrace.cpp b/src/coreclr/vm/eventtrace.cpp
index 99620ac07e2a8b..d4a89bc825a5f0 100644
--- a/src/coreclr/vm/eventtrace.cpp
+++ b/src/coreclr/vm/eventtrace.cpp
@@ -4680,6 +4680,12 @@ extern "C"
{
ETW::EnumerationLog::EnumerateForCaptureState();
}
+
+ if (g_fEEStarted && !g_fEEShutDown)
+ {
+ // Emit the YieldProcessorNormalized calculated values at the beginning of the trace.
+ FireEtwInitializeYieldProcessorNormalizedInfo(g_yieldsPerNormalizedYield, g_optimalMaxNormalizedYieldsPerSpinIteration, GetClrInstanceId());
+ }
}
#ifdef FEATURE_COMINTEROP
if (ETW_EVENT_ENABLED(MICROSOFT_WINDOWS_DOTNETRUNTIME_PRIVATE_PROVIDER_DOTNET_Context, CCWRefCountChange))
diff --git a/src/coreclr/vm/yieldprocessornormalized.cpp b/src/coreclr/vm/yieldprocessornormalized.cpp
index 91547923310fbd..001559d457ed0a 100644
--- a/src/coreclr/vm/yieldprocessornormalized.cpp
+++ b/src/coreclr/vm/yieldprocessornormalized.cpp
@@ -94,6 +94,8 @@ static void InitializeYieldProcessorNormalized()
s_isYieldProcessorNormalizedInitialized = true;
GCHeapUtilities::GetGCHeap()->SetYieldProcessorScalingFactor((float)yieldsPerNormalizedYield);
+
+ FireEtwInitializeYieldProcessorNormalizedInfo(g_yieldsPerNormalizedYield, g_optimalMaxNormalizedYieldsPerSpinIteration, GetClrInstanceId());
}
void EnsureYieldProcessorNormalizedInitialized()