-
Notifications
You must be signed in to change notification settings - Fork 373
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[PROF-8667] Heap Profiling - Part 4 - Labels #3329
Conversation
a9a7a49
to
94bb1ae
Compare
b4d7f97
to
4b21516
Compare
720656c
to
413d441
Compare
8577e49
to
fb50bbd
Compare
6578308
to
13275fb
Compare
fb50bbd
to
6674f5c
Compare
13275fb
to
18d37c7
Compare
6674f5c
to
ef2dfbf
Compare
18d37c7
to
c935ff5
Compare
c935ff5
to
b8baedf
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left some notes, but this looks sane! 👍
ext/ddtrace_profiling_native_extension/collectors_thread_context.c
Outdated
Show resolved
Hide resolved
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #3329 +/- ##
==========================================
- Coverage 98.23% 98.23% -0.01%
==========================================
Files 1253 1253
Lines 73039 73048 +9
Branches 3431 3428 -3
==========================================
+ Hits 71752 71760 +8
- Misses 1287 1288 +1 ☔ View full report in Codecov by Sentry. |
8e657f1
to
6a8c6ee
Compare
b8bb16e
to
a598746
Compare
4610e55
to
c20d042
Compare
66dfb9d
to
4f3b556
Compare
[PROF-8667] Rework queue system into a snapshot system. [PROF-8667] Address some comments [PROF-8667] Address comments
4f3b556
to
021d9b5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍 Left a few final comments/suggestions
4b3d636
to
1a2d02d
Compare
What does this PR do?
This PR follows #3328 by adding
allocation class
andgc gen age
labels to the heap samples included in the Ruby profiles.How does it work?
For
allocation class
, we simply hold on to the resolved class that was already being computed during the normal allocation sampling path.For
gc gen age
, we record the GC Generation/Epoch (i.e.GC.count
) when we saw the allocation happening. Then, when writing the heap samples in a new profile, we calculate the difference between the allocation generation and the current generation and that gives us the age of the recorded object in terms of "how many GCs have run since we saw this object being allocated".Motivation:
Additional Notes:
How to test the change?
Heap samples included in profiles when an app is executed with:
should now include the above labels. This can be trivially tested by downloading these profiles and looking at them with some pprof parsing tool like https://github.com/felixge/pprofutils
For Datadog employees:
credentials of any kind, I've requested a review from
@DataDog/security-design-and-guidance
.Unsure? Have a question? Request a review!