Conversation
Overall package sizeSelf size: 5.6 MB Dependency sizes
🤖 This report was automatically generated by heaviest-objects-in-the-universe |
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## master #3822 +/- ##
==========================================
- Coverage 85.06% 84.87% -0.20%
==========================================
Files 228 230 +2
Lines 9363 9579 +216
Branches 33 33
==========================================
+ Hits 7965 8130 +165
- Misses 1398 1449 +51 ☔ View full report in Codecov by Sentry. |
2772539 to
4c8ad83
Compare
BenchmarksBenchmark execution time: 2023-11-29 11:25:23 Comparing candidate commit c7e4d31 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 521 metrics, 11 unstable metrics. |
4c8ad83 to
daa47f3
Compare
There was a problem hiding this comment.
🤓 nitpick: Using the timestamps of the earliest and latest events to determine profile start and duration might be inaccurate.
There was a problem hiding this comment.
Yeah, although I'm unsure what I could use instead of it…
There was a problem hiding this comment.
Maybe take start/stop timestamps in start / profile functions.
Or have Profiler class take these timestamps and pass them along, that would have the nice side effect of all profiles having the same start and duration.
There was a problem hiding this comment.
that sounds like a great idea; I filed a JIRA issue in the timelines epic to track this.
nsavoire
left a comment
There was a problem hiding this comment.
LGTM !
Thanks for splitting the PR into easily reviewable commits 😀
daa47f3 to
0e1d491
Compare
|
Hey @nsavoire, thank you for the review, but I have updated the code in the meantime :-( I had to remove one commit (the one that removed locations from the GC events) – turns out the profiler backend ignores samples that are entirely without a location. I did rework it though to create one synthetic dummy location per profile and use it for all samples. I have a change in the pipeline for UI that makes these invisible (just as they are for .Net profiles). I also experimented with various ways to visualize DNS events and avoid overlap between events. The easiest I could work out so far is to scatter them into multiple virtual "DNS" threads as needed, so I added that functionality too. A small test app that does: will produce a profile that renders like this (also thanks to some backend changes I made to group these DNS threads in a single group): If you can re-review the changes in the last 4 commits, it'd be appreciated; I'll open a new PR for any subsequent work. |
369002c to
41b272f
Compare
41b272f to
c7e4d31
Compare

What does this PR do?
Gathers DNS performance events and adds them to the timeline.
Motivation
2023 Q4 Continuous Profiler OKR 5
Additional Notes
This is best reviewed commit by commit, or at least by reviewing the first commit separately, then the others together. The reason for this is that the first commit refactors the timeline profiler from only gathering GC events to having an architecture for gathering multiple types of events. This already pays off in spades – you can see how "Add DNS" is a pretty small commit after the refactor – but it will make adding Net events similarly trivial too.
Security
Datadog employees:
@DataDog/security-design-and-guidance.