Skip to content

Commit 1748baa

Browse files
authored
Add Stats on EnqueueRequestRejitForLoadedModules (#7340)
## Summary of changes This PR adds Stats on `EnqueueRequestRejitForLoadedModules` ## Reason for change ## Implementation details ## Test coverage ## Other details <!-- Fixes #{issue} --> <!-- ⚠️ Note: Where possible, please obtain 2 approvals prior to merging. Unless CODEOWNERS specifies otherwise, for external teams it is typically best to have one review from a team member, and one review from apm-dotnet. Trivial changes do not require 2 reviews. MergeQueue is NOT enabled in this repository. If you have write access to the repo, the PR has 1-2 approvals (see above), and all of the required checks have passed, you can use the Squash and Merge button to merge the PR. If you don't have write access, or you need help, reach out in the #apm-dotnet channel in Slack. -->
1 parent b8cd9b4 commit 1748baa

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

tracer/src/Datadog.Tracer.Native/rejit_preprocessor.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,9 +527,10 @@ void RejitPreprocessor<RejitRequestDefinition>::EnqueueRequestRejitForLoadedModu
527527
}
528528

529529
Logger::Debug("RejitHandler::EnqueueRequestRejitForLoadedModules");
530+
auto enqueueMeasure = trace::Stats::Instance()->EnqueueRequestRejitForLoadedModulesMeasure();
530531

531532
std::function<void()> action = [=, modules = std::move(modulesVector), definitions = std::move(definitions),
532-
localPromise = promise]() mutable {
533+
localPromise = promise, enqueueMeasure = std::move(enqueueMeasure)]() mutable {
533534
// Process modules for rejit
534535
const auto rejitCount = RequestRejitForLoadedModules(modules, definitions, true);
535536

@@ -538,6 +539,8 @@ void RejitPreprocessor<RejitRequestDefinition>::EnqueueRequestRejitForLoadedModu
538539
{
539540
localPromise->set_value(rejitCount);
540541
}
542+
543+
enqueueMeasure.Refresh();
541544
};
542545

543546
// Enqueue

tracer/src/Datadog.Tracer.Native/stats.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class Stats : public shared::Singleton<Stats>
4949
std::atomic_ullong moduleUnloadStarted = {0};
5050
std::atomic_ullong moduleLoadFinished = {0};
5151
std::atomic_ullong assemblyLoadFinished = {0};
52+
std::atomic_ullong enqueueRequestRejitForLoadedModules = {0};
5253
std::atomic_ullong initialize = {0};
5354

5455
//
@@ -61,6 +62,7 @@ class Stats : public shared::Singleton<Stats>
6162
std::atomic_uint moduleUnloadStartedCount = {0};
6263
std::atomic_uint moduleLoadFinishedCount = {0};
6364
std::atomic_uint assemblyLoadFinishedCount = {0};
65+
std::atomic_uint enqueueRequestRejitForLoadedModulesCount = {0};
6466

6567
public:
6668
Stats()
@@ -76,6 +78,7 @@ class Stats : public shared::Singleton<Stats>
7678
moduleUnloadStarted = 0;
7779
moduleLoadFinished = 0;
7880
assemblyLoadFinished = 0;
81+
enqueueRequestRejitForLoadedModules = 0;
7982
initialize = 0;
8083

8184
initializeProfilerCount = 0;
@@ -86,6 +89,7 @@ class Stats : public shared::Singleton<Stats>
8689
moduleUnloadStartedCount = 0;
8790
moduleLoadFinishedCount = 0;
8891
assemblyLoadFinishedCount = 0;
92+
enqueueRequestRejitForLoadedModulesCount = 0;
8993
}
9094
SWStat InitializeProfilerMeasure()
9195
{
@@ -132,6 +136,11 @@ class Stats : public shared::Singleton<Stats>
132136
assemblyLoadFinishedCount++;
133137
return SWStat(&assemblyLoadFinished);
134138
}
139+
SWStat EnqueueRequestRejitForLoadedModulesMeasure()
140+
{
141+
enqueueRequestRejitForLoadedModulesCount++;
142+
return SWStat(&enqueueRequestRejitForLoadedModules);
143+
}
135144
SWStat InitializeMeasure()
136145
{
137146
return SWStat(&initialize);
@@ -148,6 +157,7 @@ class Stats : public shared::Singleton<Stats>
148157
const auto ns_jitInlining = jitInlining.load();
149158
const auto ns_jitCachedFunctionSearchStarted = jitCachedFunctionSearchStarted.load();
150159
const auto ns_initializeProfiler = initializeProfiler.load();
160+
const auto ns_enqueueRequestRejitForLoadedModules = enqueueRequestRejitForLoadedModules.load();
151161

152162
const auto count_moduleLoadFinishedCount = moduleLoadFinishedCount.load();
153163
const auto count_callTargetRequestRejitCount = callTargetRequestRejitCount.load();
@@ -158,6 +168,7 @@ class Stats : public shared::Singleton<Stats>
158168
const auto count_jitInliningCount = jitInliningCount.load();
159169
const auto count_jitCachedFunctionSearchStartedCount = jitCachedFunctionSearchStartedCount.load();
160170
const auto count_initializeProfilerCount = initializeProfilerCount.load();
171+
const auto count_enqueueRequestRejitForLoadedModulesCount = enqueueRequestRejitForLoadedModulesCount.load();
161172

162173
const auto ns_total = ns_initialize + ns_moduleLoadFinished + ns_callTargetRequestRejit +
163174
ns_callTargetRewriter + ns_assemblyLoadFinished + ns_moduleUnloadStarted +
@@ -174,33 +185,47 @@ class Stats : public shared::Singleton<Stats>
174185
ss << ns_total / 1000000 << "ms ";
175186
ss << "[Initialize=";
176187
ss << ns_initialize / 1000000 << "ms";
188+
177189
ss << ", ModuleLoadFinished=";
178190
ss << ns_moduleLoadFinished / 1000000 << "ms"
179191
<< "/" << count_moduleLoadFinishedCount;
192+
180193
ss << ", CallTargetRequestRejit=";
181194
ss << ns_callTargetRequestRejit / 1000000 << "ms"
182195
<< "/" << count_callTargetRequestRejitCount;
196+
183197
ss << ", CallTargetRewriter=";
184198
ss << ns_callTargetRewriter / 1000000 << "ms"
185199
<< "/" << count_callTargetRewriterCount;
200+
186201
ss << ", AssemblyLoadFinished=";
187202
ss << ns_assemblyLoadFinished / 1000000 << "ms"
188203
<< "/" << count_assemblyLoadFinishedCount;
204+
189205
ss << ", ModuleUnloadStarted=";
190206
ss << ns_moduleUnloadStarted / 1000000 << "ms"
191207
<< "/" << count_moduleUnloadStartedCount;
208+
192209
ss << ", JitCompilationStarted=";
193210
ss << ns_jitCompilationStarted / 1000000 << "ms"
194211
<< "/" << count_jitCompilationStartedCount;
212+
195213
ss << ", JitInlining=";
196214
ss << ns_jitInlining / 1000000 << "ms"
197215
<< "/" << count_jitInliningCount;
216+
198217
ss << ", JitCacheFunctionSearchStarted=";
199218
ss << ns_jitCachedFunctionSearchStarted / 1000000 << "ms"
200219
<< "/" << count_jitCachedFunctionSearchStartedCount;
220+
201221
ss << ", InitializeProfiler=";
202222
ss << ns_initializeProfiler / 1000000 << "ms"
203223
<< "/" << count_initializeProfilerCount;
224+
225+
ss << ", EnqueueRequestRejitForLoadedModules=";
226+
ss << ns_enqueueRequestRejitForLoadedModules / 1000000 << "ms"
227+
<< "/" << count_enqueueRequestRejitForLoadedModulesCount;
228+
204229
ss << "]";
205230
return ss.str();
206231
}

0 commit comments

Comments
 (0)